我有一个 C# 中的托管 GUI 和 C++ 中的非托管 DLL。我通过引用填充它的 DLL 函数来传递一个结构。该结构有几个 wchar_t 元素和几个字符串。
在 DLL 中,所有数据在返回 GUI 之前看起来都很好。例如:
struct1->ch1 = 0x1234;
struct1->ch2 = 0x5678;
struct1->ch3 = 'ab';
struct1->ch4 = 'cd';
但是当从 DLL 返回结构时,数据会出现乱码。
struct1->ch1 == 0x0034
struct1->ch2 == 0x0012
struct1->ch3 == 0x0078
struct1->ch4 == 0x0056
其他字符串元素返回正常。
填充的 char 数据是单字节,所以我知道我可以只使用 BYTE 类型,但我想弄清楚这一点。
我是托管/非托管关系的新手,所以我不确定发生了什么。有任何想法吗?