我正在尝试编写一些从非托管DLL调用方法的C#代码。dll中的函数原型为:
extern "C" __declspec(dllexport) char *foo(void);
在C#中,我首先使用:
[DllImport(_dllLocation)]
public static extern string foo();
它似乎在表面上起作用,但是在运行时出现内存损坏错误。我认为我指的是碰巧是正确的但已经被释放的内存。
我尝试使用称为“ P / Invoke Interop Assistant”的PInvoke代码生成实用程序。它给了我输出:
[System.Runtime.InteropServices.DLLImportAttribute(_dllLocation, EntryPoint = "foo")]
public static extern System.IntPtr foo();
它是否正确?如果是这样,如何在C#中将此IntPtr转换为字符串?
ABOUTYOU
相关分类