带指针的PInvoke - c++到c#
PInvoke with pointers - C++ to C#
下面是我试图转换为c#的c++中的PInvoke块:
typedef PVOID JHANDLE ;
typedef UINT32 JRET ;
#define JEXPORT __declspec(dllimport) JRET
JEXPORT
JInitialize (
OUT JHANDLE* ppHandle,
IN PVOID context,
IN UINT32 flags
) ;
我尝试了下面的调用,但它抛出了一个pinvokestack失衡异常,说签名不匹配:
[DllImport("jhi.dll")]
public static extern UInt32 JHI_Initialize(out IntPtr ppHandle, IntPtr context, UInt32 flags);
显然,指针的指针处理方式不同,但我不确定它是如何转换的
您的[DllImport]声明中缺少CallingConvention,它是Cdecl。
相关文章:
- 我无法从 C# 获取 PInvoke 的输入参数以C++ DLL 以用作 IntPtr 的输出
- 在Mono-Pinvoke中尝试使用本机C++时未定义的符号
- 如何修复"方法的类型与 PInvoke 不兼容"
- C++互操作(隐式 PInvoke)的限制
- PINVOKE字节阵列从C 到C#
- 第二个值在 pinvoke 期间未传递给C++函数
- 将带有结构字段的结构从C 返回到C#PINVOKE
- 从 C# 到通过 PInvoke C++的简单结构中的垃圾数据
- 带有指针到指针参数的 PInvoke 函数
- 如何在C#中PInvoke另一个结构中的结构数组
- 无法为extern c int _clrcall生成pinvoke ..呼叫元数据中缺少的约定
- C#调用C 第三方DLL(无源)提出异常 - 不兼容PinVoke
- PInvoke "Attempted to read or write protected memory"
- AOT问题,消息"正在Xamarin iOS上尝试使用Pinvoke JIT编译方法"
- 是否更正PInvoke签名以使用带有C#保留内存的嵌套结构
- C# PInvoke - 返回 char* 和引用 char* 参数的函数
- 如何使用PINVOKE将图像从C或C 发送到C#
- Pinvoke阵列编组失败
- pinvoke c function - System.BadImageFormatException
- 使用PINVOKE编组LPWSTR的C风格数组,以托管字符串[]