ネイティブC++ DLLをC#DLLにマーシャリングしています。私はC/C++であまり認知されていませんが、私はこの問題に執着するまで動作させることができました。ここでは非常に単純なコードの例です:C#P/Invoke:ネイティブ出力パラメータ値がマネージコードに到達しない
C++
PROASADLL __declspec(dllexport) void outTest(int* number){
int temp = *number + 10;
number = &temp; //*number = 12
}
C#
[DllImport("ProAsaNativeDll.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern void outTest(ref int number);
public static int OutTest()
{
int number = 2;
outTest(ref number);
return number; //number = 2
}
私は私の本当のシナリオだと注意してください、私はこれはへのポインタで動作するように取得しようとしています構造体へのポインタですが、マーシャリングの問題ではないので、私はそれを残すことにしました。この単純なコードでさえも機能しません。 C++のコードは動作しますが、私は愚かでありそこに問題があることを排除することはありません。私が言ったように、C/C++はあまり知られていません。
C#ラッパーメソッドの数値変数の値は変更されません。助けてください。
悪いC++コードです。あなたがそれをピンボケしたとき、それは決して良くなりません。最初にC++テストプログラムから動作させる。 –