2011-06-01 135 views
2

我有托管的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 ?!?! 

谢谢任何​​提示!

迎接

+1

托管C++的正式名称C++ CLI,所以我重申了这一点。 – Xeo 2011-06-01 11:27:19

+0

好的抱歉!它被忽视了! – leon22 2011-06-01 11:52:38

回答

3

你在找什么是int%,这是C++ CLI引用正确的语法和称为tracking reference

Uint32 Wrapper::someMethod(int %value) 
+0

谢谢(我已经在想那个reference = pointer ;-))! – leon22 2011-06-01 13:32:21

相关问题