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(返回后在解读)