日期:2014-05-17  浏览次数:21124 次

同学们、前辈们好。我有一个问题求助是关于C#导入C++生成的DLL的
http://pan.baidu.com/s/1eP06r

上我的工程的下载地址。求个解决方案。已经盯着屏幕一天,眼睛已瞎。

其中Coredll/Coredll里面是C++的win32 dll工程生成的dll名字叫做Coredll.dll,这个dll使用了C++ boost库中的boost::thread进行多线程的实现。

文件夹Coredll/AutoWifi是另一个引用Coredll.dll的C#工程

单击Autowifi工程里面的Applicatonli里的'停止wifi'按钮 调用dll中的int Test(){return 22;}函数

我总是出现如下错误:
“System.AccessViolationException”类型的未经处理的异常出现在 AutoWifi.exe 中。

其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。


我先后查找了许多资料。尝试使用过unsafe+fixed域赖解决问题依然弹出上述错误。
将使用的函数中的临时变量声明为static也不行。求大神们给一个解决方案。

------解决方案--------------------
受保护内存问题大都是需要返回字符串之类的信息时的内存问题,应该预先分配空间,将地址用参数传入 DLL。