Итак, попав в новое тысячелетие, я переписал свой код С++ с помощью
int main(int argc, wchar_t **argv)
Если построено с параметрами Unicode или MBCS, тогда, когда приложение запускается с помощью командной строки arg, либо напрямую, либо путем dbl-click имена файлов, переданные в argv [], нечитабельно = в некоторой смеси китайских шрифтов.
Спасибо за комментарии - я попробую и суммирую (z) их здесь для поисковой системы.
-
wmain(int argc,char **argv)
может использоваться только для приложения командной строки (подсистема: консоль) -
int winMain(int argc, wchar_t **argv)
работает для gui (подсистема: windows), но gui заменяет его собственной точкой входа. В случае Qt это не работаетqtmaind.lib(qtmain_win.obj): ошибка LNK2019: неразрешенный внешний символ _main, ссылающийся на функцию _WinMain @16
Решение похоже на использование main(int arc,char **argv)
или main(int argc,wchar_t**argv)
, но игнорируйте argv. Затем вызовите QApplication с argv или NULL - argv игнорируется, поскольку Qt внутренне вызывает GetCommandLine().
Затем используйте app.arguments, чтобы вернуть проанализированные аргументы.
Затем они могут быть преобразованы обратно в wchar с строковыми строками Qt, если это необходимо.
QApplication app(argc, (char**)argv); or QApplication app(argc,NULL);
QStringList args = app.arguments();
Извините, что я изначально не обозначил этот Qt, потому что я не думал, что это важно.
Если кто-то хочет отредактировать это, чтобы также включить, как это сделать в MFC - пожалуйста.