5

C++/CLI 相互運用レイヤーを使用して、C# アプリケーションから既存の C++ ライブラリを呼び出そうとしています。次のような C++ 関数があります。

void doSomething(int* foo, int size);

IntPtr start と int size の 2 つのフィールドを保持する C# オブジェクト。次のようなマネージ 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 に答える