【发布时间】:2013-11-27 20:51:52
【问题描述】:
我正在使用具有以下不透明句柄的第三方 C 库:
typedef struct _VendorHandle *VendorHandle;
这里是供应商的如何加载句柄的 C 示例:
VendorHandle handle;
int err;
err = vendorLoadFile(&handle, "something.bin");
我正在尝试使用以下声明在 C# 中使用 PInvoke 调用此方法:
[DllImport("VendorLib.dll")]
static extern int vendorLoadFile(IntPtr handle, string path);
然后我添加了以下代码来使用声明:
IntPtr handle = new IntPtr();
int code = vendorLoadFile(handle, path);
当我运行它时,我收到以下错误:
试图读取或写入受保护的内存。这通常是一个 指示其他内存已损坏。
我知道 DLL 很好,并且 PInvoke 正在工作,因为我正在执行他们的 vendorVersion() 方法,所以它必须是我做错的其他事情。
【问题讨论】: