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.
wmain(int argc,char **argv)
ne peut être utilisé pour une ligne de commande (subsystem:console) appint 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 pasqtmaind.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
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de nom de votre point d'entrée
wmain
: http://msdn.microsoft.com/en-us/library/fzc2cy7w(SV.80).aspxVous pouvez utiliser GetCommandLine fonction de ce but.
Essayez ceci:
_tmain
est défini commewmain
lorsqu'il est compilé avec l'option UNICODE et quemain
lorsqu'il est compilé avec le MBCS option.