2009-03-01 21 views
2

Ich beschloss, mich heute mit wxWidgets vertraut zu machen. Ich habe Version 2.8.9 (aktuelle Version) heruntergeladen und die Bibliothek in allen gewünschten Modi kompiliert.wxWidgets und VC++

Ich bin in der Lage, die Samples, die mit WXWidgets ausgeliefert werden, zu erstellen/zu verwenden. Wenn ich jedoch mit /Za kompilieren (d. H. Sprachenerweiterungen deaktiviert), bekomme ich über 100 Build-Fehler auf sogar die kleinsten WxWidgets Beispiel.

Ich kann keine Dokumentation zu diesem Problem finden. Könnte ich etwas definieren, das die Interna von wxWidget standardkonform werden lässt (zumindest was die Compliance von VC++ betrifft)?

Vielleicht habe ich beim Erstellen der ursprünglichen Bibliothek etwas falsch gemacht ... Hat jemand schon einmal dieses "Problem" erlebt?

Danke!

EDIT: Ich vergaß zu erwähnen, dass ich mit VC++ 9.

Auch hier sind die ersten paar Fehler:

------ Erstellen gestartet: Projekt: minimal, Konfiguration: Unicode Debug Win32 ------

Kompilieren ...

minimal.cpp

c: \ WxWidgets-2.8.9 \ include \ wx/dynarray.h (69): Fehler C2143: Syntaxfehler: fehlende ')' vor '*'

c: \ WxWidgets-2.8.9 \ include \ wx/dynarray.h (69): Fehler C2143: Syntaxfehler: fehlende ';' vor '*'

c: \ WxWidgets-2.8.9 \ include \ wx/dynarray.h (69): Fehler C2059: Syntaxfehler: ')'

c: \ WxWidgets-2.8.9 \ Include \ wx/dynarray.h (69): Fehler C4430: fehlender Typspezifizierer - int wird angenommen. Hinweis: C++ unterstützt nicht default-int

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (810): Fehler C2146: Syntaxfehler: fehlende ';' vor Bezeichner 'SCMPFUNC'

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (810): Fehler C4430: fehlender Typbezeichner - int wird angenommen. Anmerkung: C++ unterstützt nicht default-int

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (810): Fehler C4430: fehlender Typspezifizierer - int angenommen. Hinweis: C++ unterstützt nicht default-int

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (811): Fehler C2146: Syntaxfehler: fehlende ';' vor Bezeichner 'SCMPFUNC'

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (811): Fehler C4430: fehlender Typspezifizierer - int angenommen. Hinweis: C++ unterstützt nicht default-int

c: \ wxWidgets-2.8.9 \ include \ wx/dynarray.h (811): Fehler C4430: fehlende Typangabe - int angenommen.Hinweis: C++ nicht unterstützt default-int

EDIT: Es sieht aus wie der erste Fehler ist durch die Tatsache, dass _cdecl verwendet wird. Es sieht aus wie defs.h prüft nur, ob __VISUALC__ definiert ist. Nichts über Pedantismus in Sicht ...

+0

Bitte veröffentlichen Sie einige vom Compiler generierte Fehler. – HyperCas

+0

Es würde wahrscheinlich helfen zu wissen, welche Version von Visual Studio Sie haben - jede VC++ - Version hat eine andere Ebene der Standards unterstützt. – greyfade

Antwort

5

Sie werden wahrscheinlich feststellen, dass Sie nicht einmal eine grundlegende Win32-Anwendung erstellen können, geschweige denn eine wxWidgets-App mit /Za, da die Windows Platform SDK-Header in VS2008 enthalten sind Verwenden Sie Spracherweiterungen. Die einzige Lösung ist, /Za zu deaktivieren.

Der spezifische Fehler, den Sie sehen, liegt daran, dass das Schlüsselwort _cdecl eine Microsoft-Erweiterung ist und nicht Teil von C++. Weitere Informationen finden Sie in den Seiten documentation for /Za und Microsoft Extensions to C and C++ und C++ Keywords in MSDN.

+0

Nun, was es wert ist, baut die neueste PSDK (6.1) mit/Za ohne Probleme auf. Was den Rest Ihres Posts angeht, ist mir klar, wie Erweiterungen funktionieren. Etwas enttäuschend, dass wxWidgets dies nicht unterstützt. Naja, danke für die Bestätigung! –

+0

Interessante Notiz über das neueste SDK, danke. – ChrisN