Вызов управляемых функций C ++ из C # - PullRequest
2 голосов
/ 01 июня 2011

У меня есть управляемый C ++ Wrapper для неуправляемого кода 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)
{
    ...
}

Я использую управляемую оболочку C ++ с «добавить ссылку» в VS2008, но когда я вызываюУ какого-то метода в 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 Ответ

3 голосов
/ 01 июня 2011

То, что вы ищете, это int%, который является правильным синтаксисом для ссылок CLI C ++ и называется отслеживающей ссылкой :

Uint32 Wrapper::someMethod(int %value)
...