Итак, войдя в новое тысячелетие, я переписал свой код на c ++:
int main(int argc, wchar_t **argv)
При сборке с опциями Unicode или MBCS, когда приложение запускается с командной строкой arg, либо напрямую, либо щелчком dbl, имена файлов, передаваемые в argv [], не читаются = в некоторых сочетаниях китайских шрифтов.
Спасибо за комментарии - я постараюсь обобщить их здесь для поисковой системы.
wmain(int argc,char **argv)
можно использовать только для приложения командной строки (подсистема: консоль)
int winMain(int argc, wchar_t **argv)
работает для графического интерфейса (подсистема: Windows), но графический интерфейс заменяет его собственной точкой входа. В случае Qt это не работает
qtmaind.lib (qtmain_win.obj): ошибка LNK2019: неразрешенный внешний символ _основная ссылка в функции _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 - пожалуйста, сделайте это.