6

void someFunc(char* arg1, int* arg2)C#でこの関数を使用するときにパラメーターをマーシャリングしたいC ++の関数があります(DLLをインポートした後)。

私がここで混乱しているので、どうやってマーシャルするべきか教えてもらえますか?

[DllImport(Dllname)]
extern void someFunc([MarshallAsAttribute(UnmanagedType,LPStr)] string arg1, IntPtr arg2);

ここでIntPtrを使用する必要がありますか?C#からint変数のアドレスを渡して、C ++のポインターに到達するようにすることはできませんか?

4

1 に答える 1

9

この問題はint*、Cのさまざまなシナリオで使用できます。これをどのようにマーシャリングするかは、が何int* arg2を表すかによって少し異なります。

たとえば、intの値を設定するだけの場合は、これをとしてマーシャリングできますref int。ただし、int*が配列を表している場合は、配列を渡す必要があります(ただし、ポインターを介して配列を使用する場合に一般的な長さの項がないため、これはほとんどありません)。

于 2012-06-19T16:48:29.270 に答える