我知道有很多关于将指针从 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”中的元素之一是一个字符串指针,它指向 C++ 中的一个字符串(类型:unsigned char)。我试过这个但它不起作用:
String name = "myName";
fixed (char* nameAddress = name)
{
uint[] data = { 0x00, 0x01, 0x02,(uint) nameAddress };
Int16 result = ThirdParty_command(0, 0, data);
}