0

我知道有很多关于将指针从 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);
}
4

1 回答 1

0

很可能unsigned char*是正常情况造成的byte[],不是uint[]。检查 C 端预期的字符串类型,您可能需要将 UTF-16(C# 字符串)转换为其他编码,如 UTF-8。

于 2012-05-31T01:13:10.710 回答