2009-03-01 8 views
2

J'ai décidé de me familiariser avec wxWidgets aujourd'hui. J'ai téléchargé la version 2.8.9 (version actuelle), et compilé la bibliothèque dans tous les modes désirés.wxWidgets et VC++

Je suis capable de générer/exécuter les échantillons fournis avec wxWidgets prêts à l'emploi. Toutefois, lorsque je compile avec /Za (c'est-à-dire que les extensions de langage sont désactivées), je reçois plus de 100 erreurs de construction sur le plus petit échantillon de wxWidgets.

Je ne trouve aucune documentation sur ce problème. Puis-je définir quelque chose qui permutera les standards internes de wxWidget pour qu'ils soient conformes aux normes (au moins en ce qui concerne la conformité de VC++)?

Peut-être que j'ai fait quelque chose de mal en construisant la bibliothèque originale ... Quelqu'un at-il déjà rencontré ce "problème" avant?

Merci!

EDIT: Je oublié de mentionner que j'utilise VC++ 9.

De plus, voici les premières erreurs:

------ Construire Commencé projet: minimum, Configuration: Unicode Debug Win32 ------

... Compiler

minimal.cpp

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (69): erreur C2143: erreur de syntaxe: manquant ')' avant '*'

c: \ wxWidgets-2.8.9 \ comprennent \ wx/dynarray.h (69): erreur C2143: erreur de syntaxe: manquant ';' avant '*'

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (69): erreur C2059: erreur de syntaxe: ')

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (69): erreur C4430: spécificateur de type manquant - int supposé. Remarque: C++ ne prend pas en charge default-int

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (810): erreur C2146: erreur de syntaxe: manquant ';' avant l'identificateur 'SCMPFUNC'

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (810): erreur C4430: spécificateur de type manquant - int supposé. Remarque: C++ ne prend pas en charge default-int

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (810): erreur C4430: spécificateur de type manquant - int supposé. Remarque: C++ ne prend pas en charge default-int

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (811): erreur C2146: erreur de syntaxe: manquant ';' avant l'identificateur 'SCMPFUNC'

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (811): erreur C4430: spécificateur de type manquant - int supposé. Remarque: C++ ne prend pas en charge default-int

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (811): erreur C4430: spécificateur de type manquant - int supposé.Note: C++ ne prend pas en charge par défaut-int

EDIT: Il ressemble à la première de erreur provoquée par le fait que _cdecl est utilisé. Il ressemble à defs.h seulement vérifie si __VISUALC__ est défini. Rien sur le pédantisme en vue ...

+0

Veuillez poster quelques erreurs générées par le compilateur. – HyperCas

+0

Il serait probablement utile de savoir quelle version de Visual Studio vous avez - chaque version de VC++ a un niveau différent de support des standards. – greyfade

Répondre

5

Vous trouverez probablement que vous ne pourrez pas créer une application Win32 de base, et encore moins une application wxWidgets, avec /Za, car les en-têtes du Kit de développement Windows Platform inclus avec VS2008 utiliser des extensions de langue. La seule solution consiste à désactiver /Za.

L'erreur spécifique que vous voyez est parce que le mot-clé _cdecl est une extension Microsoft, et ne fait pas partie de la norme C++. Pour plus d'informations, consultez les pages documentation for /Za et Microsoft Extensions to C and C++ et C++ Keywords dans MSDN.

+0

Eh bien, pour ce que ça vaut, le dernier PSDK (6.1) construit avec/Za sans problèmes. En ce qui concerne le reste de votre message, je suis bien conscient du fonctionnement des extensions. Un peu décevant que wxWidgets ne supporte pas cela. Eh bien, merci de confirmer! –

+0

Note intéressante sur le dernier SDK, merci. – ChrisN

Questions connexes