2011-06-01 99 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