从C#调用托管的C++函数#
问题描述:
我有托管的C++ Wrapper用于非托管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引用正确的语法和称为tracking reference:
Uint32 Wrapper::someMethod(int %value)
+0
谢谢(我已经在想那个reference = pointer ;-))! – leon22 2011-06-01 13:32:21
托管C++的正式名称C++ CLI,所以我重申了这一点。 – Xeo 2011-06-01 11:27:19
好的抱歉!它被忽视了! – leon22 2011-06-01 11:52:38