【发布时间】:2011-05-05 08:25:14
【问题描述】:
因此进入新千年,我重写了我的 c++ 代码:
int main(int argc, wchar_t **argv)
如果使用 Unicode 或 MBCS 选项构建,则当应用程序使用命令行 arg 运行时,直接或通过 dbl-click 传递给 argv[] 的文件名是不可读的 = 在某些中文字体混合中。
感谢 cmets - 我将尝试在此处为搜索引擎汇总(z)e。
wmain(int argc,char **argv)只能用于命令行(子系统:控制台)应用-
int winMain(int argc, wchar_t **argv)适用于 gui (subsystem:windows),但 gui 将其替换为它自己的入口点。在 Qt 的情况下,这不起作用qtmaind.lib(qtmain_win.obj) : error LNK2019: unresolved external symbol _main referenced in function _WinMain@16
解决方案似乎是使用main(int arc,char **argv)
或 main(int argc,wchar_t**argv) 但忽略 argv。然后使用 argv 或 NULL 调用 QApplication - 当 Qt 内部调用 GetCommandLine() 时忽略 argv。
然后使用 app.arguments 返回解析后的参数。
然后,如果需要,可以使用 Qt 的字符串函数将这些转换回 wchar。
QApplication app(argc, (char**)argv); or QApplication app(argc,NULL);
QStringList args = app.arguments();
抱歉,我最初没有标记此 Qt,因为我认为这无关紧要。
如果有人想编辑它以包括如何在 MFC 中执行此操作 - 请执行此操作。
【问题讨论】:
-
(我知道这个问题很旧,但是)您应该发布一个自我回答,而不是在问题中包含“摘要”。问题就是问题。
标签: c++ visual-studio winapi qt unicode