Подтвердить что ты не робот

Командная строка unicode Windows argv

Итак, попав в новое тысячелетие, я переписал свой код С++ с помощью

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 - пожалуйста.

4b9b3361

Ответ 2

Вы можете использовать GetCommandLine для этой цели.

Ответ 3

Попробуйте следующее:

#include <tchar.h>

int _tmain( int argc, TCHAR **argv )
{
  return 0;
}

_tmain определяется как wmain при компиляции с параметром UNICODE и как main при компиляции с параметром MBCS.