C# プログラムからサードパーティの C++ dll へのポインタの受け渡しに関して、多くの議論があることは知っています。しかし、私のケースは特別なものです。
サードパーティの C++ DLL があり、次のように関数を呼び出します。
[DllImport(@"ThirdParty.DLL", EntryPoint = "?ThirdPartyEntryPoint", CallingConvention = CallingConvention.Cdecl)]
public static extern Int16 ThirdParty_command(uint p1, ushort p2, uint[] data);
ここで注意が必要なのは、「uint[] data」の要素の 1 つが、C++ の文字列を指す文字列ポインター (型: unsigned char ) であることです。私はこれを試しましたが、うまくいきません:
String name = "myName";
fixed (char* nameAddress = name)
{
uint[] data = { 0x00, 0x01, 0x02,(uint) nameAddress };
Int16 result = ThirdParty_command(0, 0, data);
}