欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

c#调用dll 很奇怪。该如何解决

更新时间: 2014-01-05 03:10:12 责任编辑: Author_N1

 

C#调用DLL 很奇怪。
在windows 下的情况:

//这是自己写的DLL:Dll9.dll
typedef struct con
{
int rss;
char*mac;

}CON;

_declspec(dllexport) void Pro(CON*pt,int size)
{
for(int i=0;i<size;i++)
{
(pt+i)->mac="hello";
(pt+i)->rss=i;

}
return;
}



在c#中调用该DLL:
namespace Dll9test
{
    public partial class Form1 : Form
    {



        public struct con
        {
            int rss;
            String mac;    
        }

        [DllImport("Dll9.dll")]
        public static extern void Pro([In, Out]con[] pt, int size); 

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            con[] pt = new con[5];
            Pro(pt,5);
            MessageBox.Show("dddd");
        }
    }
}
这个可以成功调用。但是相同的代码复制,做了个智能设备MFC 的dll,再在wince5.0下相同的c#代码,却出现了错误:未处理的“System.OutOfMemoryException”类型的异常出现在 smart_device.exe 中。这是为什么?望大家指点。
--参考方法--
LZ,是不是这段代码出现的错误:
con[] pt = new con[5];
            Pro(pt,5);
            MessageBox.Show("dddd");

如果是,判断一下午 Pro 函数是不是未正确导入?

最后能定位一下是哪句出现的错误,这样好分析一些。由于 WinCE 没有当前工作目录的概念,不知道的 [DllImport("Dll9.dll")] 是否能正确的导入,这个 LZ 自己做实验测试吧。
--参考方法--
建议你对char*mac;做初始化。或者改用数组,然后在dll中用strcpy
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:10:12
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19069/
本文WWW.DOC100.NET DOC100.NET版权所有。