5

我正在尝试使用 C++/CLI 互操作层从 C# 应用程序调用现有的 C++ 库。我有一个看起来像这样的 C++ 函数:

void doSomething(int* foo, int size);

以及一个包含两个字段的 C# 对象,一个 IntPtr start 和一个 int 大小。我编写了一个托管 C++ 类,如下所示:

public ref class Wrapper {
public:
    void run(System::IntPtr itn, int size);
};

现在我想在 Wrapper::run 中调用 doSomething,并让 doSomething 可以访问 C# 对象指向的同一块数据。如果没有副本,我正在尝试做的事情是否可行,如果可以,怎么做?

4

1 回答 1

3

要从Wrapper::run调用doSomething,请尝试转换System::IntPtr::ToPointer的返回值,如下所示:

doSomething(reinterpret_cast<int*>(itn.ToPointer()), size);
于 2013-01-08T17:49:28.367 回答