Ответ 1
Вам нужно указать свою точку входа wmain
: http://msdn.microsoft.com/en-us/library/fzc2cy7w(VS.80).aspx
Итак, попав в новое тысячелетие, я переписал свой код С++ с помощью
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 - пожалуйста.
Вам нужно указать свою точку входа wmain
: http://msdn.microsoft.com/en-us/library/fzc2cy7w(VS.80).aspx
Вы можете использовать GetCommandLine для этой цели.
Попробуйте следующее:
#include <tchar.h>
int _tmain( int argc, TCHAR **argv )
{
return 0;
}
_tmain
определяется как wmain
при компиляции с параметром UNICODE и как main
при компиляции с параметром MBCS.