【发布时间】:2014-06-06 19:57:06
【问题描述】:
我正在将用户生成的字符串从我的程序发送到我正在制作的 C++ DLL 函数中。它工作正常,直到我发送一个像“åäö”这样的字符串。我的函数看起来像这样:
export void showMessage(char* str) {
MessageBox(NULL, str, "DLL says", MB_OK);
}
当程序发送“åäö”时,会弹出一条带有“åäö”的消息。如何将其转换为“åäö”?需要什么库?我正在为 DLL 使用 Code::Blocks。
【问题讨论】:
-
没有理由将
str设为char *而不是const char *。像这样的函数不允许将str.c_str()用作无正当理由的参数。如果你想要 Unicode 字符,你应该使用MessageBox的宽版本。 -
确实是utf-8。不是 MessageBoxA() 的系统代码页或 MessageBoxW() 需要的 utf-16 字符串。使用 MultiByteToWideString() 使后者工作。