Windows unicode commandline argv

Afin d'entrer dans le nouveau millénaire j'ai réécrit mon code c++ avec:

int main(int argc, wchar_t **argv)

Si elle est construite avec des caractères Unicode ou MBCS les options, puis lorsque l'application est exécutée avec une ligne de commande arg, soit directement, soit par double-cliquez sur le nom des fichiers transmis à argv[] sont illisibles = dans un mélange de chinois polices.

Merci pour les commentaires - je vais essayer de summaris(z)e ici pour le moteur de recherche.

  1. wmain(int argc,char **argv) ne peut être utilisé pour une ligne de commande (subsystem:console) app
  2. int winMain(int argc, wchar_t **argv) travaille pour une interface graphique (sous-système:windows), mais l'interface graphique remplace avec son propre point d'entrée. Dans le cas de Qt, cela ne fonctionne pas

    qtmaind.lib(qtmain_win.obj) : error LNK2019: symbole externe non résolu _main référencé dans la fonction _WinMain@16

La solution semble être l'utilisation main(int arc,char **argv)
ou main(int argc,wchar_t**argv) mais ignorer la argv. Appelez ensuite QApplication avec argv ou NULL - la argv est ignoré allongement de l'intervalle Qt à l'interne les appels GetCommandLine().
Ensuite, l'utilisation de l'app.arguments pour renvoyer l'analyse des arguments.
Ceux-ci peuvent ensuite être convertis en wchar avec Qt sur les fonctions de chaîne si nécessaire.

 QApplication app(argc, (char**)argv);  or  QApplication app(argc,NULL);  
 QStringList args = app.arguments();

Désolé je n'ai pas à l'origine drapeau de ce Qt parce que je ne pense pas que ce soit nécessaire.
Si quelqu'un veut le modifier pour inclure également la façon de faire dans le MFC - s'il vous plaît.

source d'informationauteur Martin Beckett | 2010-11-04