PInvoke с указателями - от C ++ до C # - PullRequest
1 голос
/ 24 октября 2011

Ниже приведен блок 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);

Очевидно, что указатель указателя обрабатывается по-разному, но я не совсем уверен, как он переводится.

1 Ответ

2 голосов
/ 24 октября 2011

В вашей декларации [DllImport] отсутствует пропущенная CallingConvention, это Cdecl.

...