1
下面是一个在C的PInvoke块++,我试图将转换为C#:的PInvoke使用指针 - C++到C#
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);
很明显,指针的指针处理方式不同,但我不完全确定它是如何转换的。
谢谢,我总是忘记CallingConvention – Daniel
我知道这是古老的,OP的问题并不真的符合我的要求,但是这个答案在几个小时的pInvoke地狱后才救了我。你得到一票。 – Zippit