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