-1

パラメータを介して詳細を返すいくつかのアンマネージ DLL 呼び出しへの相互運用ラッパーがあります。関数は次のように表示されます。

_myWrapper->My_Method( ... out UInt32 value ... );

したがって、メソッドが次のように宣言されていると仮定します。

void My_Method(out UInt32 value);

C++/CLI コード内からこのメソッドを呼び出すにはどうすればよいですか? 私はこのような参照メソッドを簡単に呼び出す方法を知っています:

void Another_Method(ref UInt32 value);

UInt32 _value;
_myWrapper->Another_Method(%_value);

私は少し読書をしていて、私はそれができないことを読んでいますか?信じられません...おそらくこれを克服したり回避したりすることは不可能ではありませんが、冗談ですよね? それは本当に本当ですか?

ありがとうございました...

4

1 に答える 1

4

C++ では、参照パラメーターを使用して関数を呼び出すための特別な呼び出し構文はありません。値渡しのように呼び出しを記述するだけです。もちろん、上書きする左辺値を指定する必要があります。算術式の右辺値 (一時的な) 結果は使用できません。

ところで、ref関数を呼び出すためのコードも間違っています。それが問題の原因である可能性があります。

例:

C# 定義:

 void MySharpRef(ref int i)  { i = 4; }
 void MySharpOut(out int i)  { i = 5; }

C++/CLI 定義:

 void MyPlusRef(System::Int32% i) { i = 14; }
 void MyPlusOut([System::Runtime::InteropServices::OutAttribute] System::Int32% i) { i = 15; }

C# 呼び出し:

 int j;
 o.MyPlusOut(out j);
 o.MyPlusRef(ref j);

C++/CLI 呼び出し:

 System::Int32 k;
 p->MySharpOut(k);
 p->MySharpRef(k);
于 2011-09-29T15:53:05.237 に答える