1

これは簡単なはずですが (C++ です)、次のタスクを実行するための正しい構文が見つかりません。

  1. C# では、マネージ C++ 関数に渡したい整数の「結果」があります。
  2. マネージ C++ 関数で、値 'result' を 6 に設定しました。
  3. 関数が戻ると、C# の設定値が 6 になりました。

(上記のコード入力ツールを使用してコピーしたコード セグメントは非常に醜く、使用を保証できません。)

C++ で必要なのは、整数ポインターを使用し、そのポインターを関数に渡し、関数にそれを設定させてから、呼び出し元に値を設定することだけです。誰かがC#で小さなコードスニペットを書いて、整数を受け取り、それをボクシングなどでポインターとしてマネージ関数に渡し、マネージ関数に値を設定させて、C#の呼び出し元が値を持っていることを本当に感謝していますreturn (ただし、戻り値としてではありません)。C# の世界の構文とマネージ C++ の世界の類似の構文を一致させることは、戦いの半分です。

Google検索でこの質問をうまく表現する方法さえわかりません。

4

1 に答える 1

1

参照によって引数を渡すだけです。

public ref class Example {
public:
    static void Foo(int% arg) {
        arg = 42;
    }
};

次に、C# から次のように呼び出します。

int value;
Example.Foo(ref value);

また、メソッドからも値を返すことができることを忘れないでください。

于 2013-04-27T00:37:23.220 に答える