【发布时间】:2011-06-01 11:16:15
【问题描述】:
我有一个用于非托管 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 ?!?!
感谢您的任何提示!
问候
【问题讨论】:
-
托管 C++ 正式称为 C++CLI,所以我重新标记了它。
-
好吧对不起!它被忽略了!
标签: c# pointers c++-cli unmanaged managed