私は.hファイルとそれらに付随する.libファイルのサードパーティコレクションを持っています。これらのネイティブ C++ ファイルを C++/CLI ラッパーでラップし、C# から最終的な呼び出しを行っています。明示的に変更しない限り、ラッパーで値が変更されない参照が渡されることを期待するメソッドを呼び出すと、問題が発生します。
現在、私の C++/CLI ラッパー コードは次のようになっています。
bool get_testInt16(int16% testInt16)
{
int16* t = static_cast<int16*>(GCHandle::ToIntPtr(GCHandle::Alloc(testInt16)).ToPointer());
bool b = m_NativeCMTY_TestData->get_testInt16(*t);
testInt16 = *t;
return b;
};
対応するネイティブ C++ コードは次のようになります。
bool get_testInt16(int16 &testInt16);
もっと良い方法があるはずだと思いますが、そうではないでしょうか?もっと良い方法があることを望んでいるとだけ言っておきましょう!