1
Magentaize 2017-10-09 12:26:38 +08:00
MessageBoxW
|
2
Magentaize 2017-10-09 12:39:30 +08:00
但是使用 utf8 无疑是更加合理的做法
|
3
justou OP @peoleser 试了下, 不得行呢. MessageBox 在这儿也许不太合适, 可以把函数改为:
void stringtest(int nCount, const char* stringArray[]) { ofstream of; of.open("test.txt"); of << stringArray[0] << ", " << stringArray[1] << endl; of << "正文, 标题" << endl; } 只要把正确的字节传递过来就好了, 不管它具体什么编码, 这里就是没接收到完整的字节 |
4
justou OP c#那边也这样试过:
extern static void stringtest(int nCount, byte[][] stringArray); byte[][] abc = { Encoding.UTF8.GetBytes("正文"), Encoding.UTF8.GetBytes("标题") }; 但是有运行时错误, 嵌套的数组不支持封送处理. |
5
Magentaize 2017-10-09 13:11:22 +08:00 via Android
你的代码里用的是 MessageBoxA,该函数只能处理短字符( ANSI ),换成 MessageBoxW 同时把函数签名里的 char*换为 LPCWSTR
|
6
hjc4869 2017-10-09 13:17:14 +08:00 via Android 1
C++那边换成 wchar_t,然后 C#这边把 dllimport 的 charset 设置成 unicode
|