因此,进入新的千年我改写了我的c ++代码:
int main(int argc, wchar_t **argv)
如果使用Unicode或MBCS选项构建,那么当使用命令行arg运行应用程序时,直接或通过dbl-click传递给argv []的文件名是不可读的=在某些混合的中文字体中。
感谢您的评论 - 我将尝试在这里总结(z)e为搜索引擎。
wmain(int argc,char **argv)
只能用于命令行(子系统:控制台)app
int winMain(int argc, wchar_t **argv)
适用于gui(子系统:windows),但gui将其替换为自己的入口点。在Qt的情况下,这不起作用
qtmaind.lib(qtmain_win.obj):错误LNK2019:函数_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中执行此操作 - 请执行此操作。
答案 0 :(得分:16)
您需要为自己的入口点wmain
命名:http://msdn.microsoft.com/en-us/library/fzc2cy7w(VS.80).aspx
答案 1 :(得分:4)
您可以使用GetCommandLine功能。
答案 2 :(得分:3)
试试这个:
#include <tchar.h>
int _tmain( int argc, TCHAR **argv )
{
return 0;
}
使用UNICODE选项编译时, _tmain
定义为wmain
,使用MBCS选项编译时,main
定义为{{1}}。