【发布时间】:2013-02-14 00:57:27
【问题描述】:
我有一个 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 类型,但我想弄清楚这一点。
我是托管/非托管关系的新手,所以我不确定发生了什么。有什么想法吗?
【问题讨论】:
-
尝试查看this question 及其选择的答案。似乎 wchar_t 不能像你这样做的方式从托管代码传递到非托管代码。