以下是我试图转换为 C# 的 C++ 中的 PInvoke block :
typedef PVOID JHANDLE ;
typedef UINT32 JRET ;
#define JEXPORT __declspec(dllimport) JRET
JEXPORT
JInitialize (
OUT JHANDLE* ppHandle,
IN PVOID context,
IN UINT32 flags
) ;
我尝试了以下调用,但它引发了 PInvokeStackImbalance 异常,指出签名不匹配:
[DllImport("jhi.dll")]
public static extern UInt32 JHI_Initialize(out IntPtr ppHandle, IntPtr context, UInt32 flags);
显然指针的指针的处理方式不同,但我不确定它是如何转换的。
最佳答案
您在 [DllImport] 声明中缺少 CallingConvention,它是 Cdecl。
关于c# - 带指针的 PInvoke - C++ 到 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7880312/