读书人

win 七 环境下 C#调用C++的DLL以读取共

发布时间: 2013-03-26 09:54:34 作者: rapoo

win 7 环境下 C#调用C++的DLL以读取共享内存的内容报错
C#调用C++的DLL以读取共享内存的内容 ,在XP和SERVER2003没有问题,但在WIN7中就提示

未处理 System.AccessViolationException
Message=尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
Source=mscorlib
StackTrace:
在 Microsoft.Win32.Win32Native.CoTaskMemFree(IntPtr ptr)

……


我猜想应该是跟WIN7的权限有关,但设置了对DLL的读取权限还是不可以,请各位高手帮忙

具体的代码如下

C#

声明
[DllImport("RLib.dll")]
private static extern bool RLib_GetAlarmCount(ref string resultText);

调用

string resultText = string.Empty;

RLib_GetAlarmCount( ref resultText)

C++的函数声明如下
extern "C" RLIBINTERFACE_DLL_API BOOL APIENTRY
RLib_GetAlarmCount(char** data);

[解决办法]
我觉得参数不该是ref string resultText

而是StringBuilder(必须先分配)或intptr(返回后在解读)

读书人网 >C#

热点推荐