Windows Unicode командной строки argv - PullRequest
11 голосов
/ 05 ноября 2010

Итак, войдя в новое тысячелетие, я переписал свой код на c ++:

int main(int argc, wchar_t **argv)

При сборке с опциями Unicode или MBCS, когда приложение запускается с командной строкой arg, либо напрямую, либо щелчком dbl, имена файлов, передаваемые в argv [], не читаются = в некоторых сочетаниях китайских шрифтов.

Спасибо за комментарии - я постараюсь обобщить их здесь для поисковой системы.

  1. wmain(int argc,char **argv) можно использовать только для приложения командной строки (подсистема: консоль)

  2. 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 - пожалуйста, сделайте это.

Ответы [ 3 ]

17 голосов
/ 05 ноября 2010

Вам необходимо указать точку входа wmain: http://msdn.microsoft.com/en-us/library/fzc2cy7w(VS.80).aspx

4 голосов
/ 05 ноября 2010

Для этой цели вы можете использовать функцию GetCommandLine .

3 голосов
/ 05 ноября 2010

Попробуйте:

#include <tchar.h>

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...