从C#调用托管C++函数



我有一个用于非托管C++代码的托管C++包装器,有必要在方法中使用一些指针参数!

在C#中,调用这个包装函数的最佳方式是什么(我在托管代码中尝试使用引用参数,然后创建指针并调用非托管代码)?

示例:

// c++/managed
Uint32 someMethod(int &value);
Uint32 Wrapper::someMethod(int &value)
{
    int *valuePtr = &value;
    return unmanagedObj->someMethod(valuePtr);
}
// c++/unmanaged
Uint32 someMethod(int *value);
Uint32 UnmanagedClass::someMethod(int *value)
{
    ...
}

我在VS2008中使用带有"添加引用"的托管C++包装,但当我调用someMethod时在C#中只有一个指针而不是引用?!

// c#
// e.g. value conversion to C++ pointer
...
Wrapper wrapper = new Wrapper();
wrapper.someMethod(ref value); // should work but here we have an C++ pointer
// and not a reference ?!?!

谢谢你的任何提示!

欢迎

您要查找的是int%,它是C++CLI引用的正确语法,称为跟踪引用:

Uint32 Wrapper::someMethod(int %value)

相关内容

  • 没有找到相关文章

最新更新