Visual C++ und wxWidgets 2.8
-
Hallo!
Ich bin langsam am verzweifeln!
Ich würde gern wxWidgets in Visual Studio 2008 Express nutzen, nur leider bekomm ich das nciht so recht hin.
Ich habe das nun schon nach der Anleitung von
http://xurble.org/weblog/2004/10/using-wxwidgets-in-visual-c-express.html
probiert. Das Beispiel im wxWidegts-Ordner samples/dialogs/dialogs.dsw funktioniert auch. Nur wenn ich selber ein Project machen will, kommt ständig die Fehlermeldung "wx/wx.h" konnte nicht geladen werden...no such file in directory...
Mit wxPack hab ichs auch schon probiert, da geht allerdings nichtmal das Beispiel...
Kann mir da vielleciht einer helfen?
Ich danke euch schonmal!
Erikly
-
hast du auch die Include-Verzeichnisse richtig eingestellt?
-
Hallo
Ich habe
C:\Program Files\Microsoft Platform SDK\Include
zu den Includeverzeichnissen hinzugefügt, so wie es in der Anleitung steht.
Wenn ich zuätzlich noch den Include-Ordner von wxWidgets hinzufüge, wo ja die wx.h drin ist, meckert er rum, dass er die setup.h nicht finde.
-
du musst auch noch den Ordner hinzufügen, wo die setup.h drin ist. Die liegt (bei standard-build) in: libs/vc_dll/msw/ (oder so öhnlcih)
-
Ok, nun hab ich den Ornder, in dem wx.h und den Ornder, in dem setup.h ist includiert.
Fehler, dass Header-dateien nicht gefunden werden kommen nicht mehr, stattdessen aber 14 andere Fehler:
------ Erstellen gestartet: Projekt: wxWidgetTest1, Konfiguration: Debug Win32 ------
Kompilieren...
base.cpp
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(5) : error C2061: Syntaxfehler: Bezeichner 'HalloWeltApp'
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(5) : error C2143: Syntaxfehler: Es fehlt ';' vor '&'
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(5) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(5) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(5) : error C2143: Syntaxfehler: Es fehlt ';' vor '&'
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(5) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(5) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(5) : error C2061: Syntaxfehler: Bezeichner 'HalloWeltApp'
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(5) : warning C4508: 'wxGetApp': Funktion sollte einen Wert zurückgeben; Ergebnistyp 'void' angenommen
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(7) : error C2825: "HalloWeltApp": Muss eine Klasse oder ein Namespace sein, wenn gefolgt von "::".
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(7) : error C2039: 'OnInit': Ist kein Element von '`global namespace''
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(7) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'OnInit'
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(7) : error C2371: 'HalloWeltApp': Neudefinition; unterschiedliche Basistypen
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(5): Siehe Deklaration von 'HalloWeltApp'
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(7) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\users\erik\documents\visual studio 2008\projects\wxwidgettest1\wxwidgettest1\base.cpp(10) : error C3861: "SetTopWindow": Bezeichner wurde nicht gefunden.
Das Buildprotokoll wurde unter "file://c:\Users\Erik\Documents\Visual Studio 2008\Projects\wxWidgetTest1\wxWidgetTest1\Debug\BuildLog.htm" gespeichert.
wxWidgetTest1 - 14 Fehler, 1 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========//base.cpp #include <wx/wx.h> #include "base.h" IMPLEMENT_APP(HalloWeltApp) bool HalloWeltApp::OnInit() { BasicFrame* frame = new BasicFrame( wxT("Hallo Welt"), 50, 50, 450, 300); frame->Show(TRUE); SetTopWindow(frame); return TRUE; } BasicFrame::BasicFrame( const wxChar* title, int xpos, int ypos, int width, int height) : wxFrame( (wxFrame *) NULL, -1, title, wxPoint( xpos, ypos), wxSize( width, height)) {} BasicFrame::~BasicFrame() {}
//base.h #ifndef BASIC_H #define BASIC_H class HalleWeltApp : public wxApp { public: virtual bool OnInit(); }; class BasicFrame : public wxFrame { public: BasicFrame( const wxChar* title, int xpos, int ypos, int width, int height); ~BasicFrame(); }; #endif
Danke für eure Hilfe!
-
[cpp]
class HalleWeltApp : public wxApp {
.
.
.
IMPLEMENT_APP(HalloWeltApp)
[/cpp]fällt dir was auf?
edit: Wieso geht der Cpp-Tag nicht? oO
edit2: Und verwende lieber wxString anstatt wxChar*
-
Ok, danke, das hatte ich übersehen...
aber
neu erstellt, und 225 Fehler!!!
Oh man...die hier alle reinzustellen wäre verrückt
Aber die Fehler sind fast alle vom Typ "nicht aufgelöstes externes Objekt"
base.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: static bool __cdecl wxAppConsole::CheckBuildOptions(char const *,char const *)" (?CheckBuildOptions@wxAppConsole@@SA_NPBD0@Z)" in Funktion ""class wxAppConsole * __cdecl wxCreateApp(void)" (?wxCreateApp@@YAPAVwxAppConsole@@XZ)".
Muss da beim Erstellen des Projektes was bestimmtes beachten??
Was mich ja noch stutzig macht, ist die Tatsache, dass das Beispiel unter wxWidgets2.8/samples/dialogs funktioniert...
Ich weiß echt nciht mehr, was ich noch machen soll.
-
du musst noch die Libs eintragen. d.h. du musst vc mitteilen, wo die wxw-libs zu finden sind (standard in lib/vc_dll). Weiterhin musst du VC noch sagen, dass er
wxbase28d.lib und wxmswcore28d.lib (oder so ähnlcih) dazulinken muss. Schau dir einfach an, welche libs das beispiel linkt. das findest du unter eigenschaften->linker
-
Ok, ich habe nun mal alle Einstellungen bei beiden verglichen.
Habe nun auch alle Libraries aus C:\Program Files\Microsoft Visual Studio 9.0\wxWidgets-2.8.8\lib\vc_lib über Eigenschaften->Linker verlinkt
Also es sieht schon viel besser aus, hab nun "nur" noch 8 Fehler
Anscheinend fehlt da immernoch was.Verlinkte Bibliotheken:
wxmsw28d_adv.lib
wxbase28d_net.lib
wxmsw28d_html.lib
wxbase28d_xml.lib
wxmsw28d_core.lib
wxbase28d.lib
wxtiffd.lib
wxjpegd.lib
wxpngd.lib
wxzlibd.lib
wxregexd.lib
wxexpatd.lib
winmm.lib
comctl32.lib
rpcrt4.lib
wsock32.lib
odbc32.lib
wxbase28d_odbc.lib
wxmsw28d_aui.lib
wxmsw28d_gl.lib
wxmsw28d_richtext.lib
wxmsw28d_xrc.lib
wxmsw28d_media.lib
wxmsw28d_qa.libDas müssten doch nun mal alle sein.
Fehler zeigt er mir noch folgende an:
Verknüpfen... base.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual bool __thiscall wxApp::Initialize(int &,wchar_t * *)" (?Initialize@wxApp@@UAE_NAAHPAPA_W@Z)". base.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __thiscall wxAppConsole::OnAssertFailure(wchar_t const *,int,wchar_t const *,wchar_t const *,wchar_t const *)" (?OnAssertFailure@wxAppConsole@@UAEXPB_WH000@Z)". base.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __thiscall wxAppConsole::OnAssert(wchar_t const *,int,wchar_t const *,wchar_t const *)" (?OnAssert@wxAppConsole@@UAEXPB_WH00@Z)". base.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxFrameNameStr" (?wxFrameNameStr@@3QB_WB)". base.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""protected: void __thiscall wxStringBase::InitWith(wchar_t const *,unsigned int,unsigned int)" (?InitWith@wxStringBase@@IAEXPB_WII@Z)" in Funktion ""public: __thiscall wxStringBase::wxStringBase(wchar_t const *)" (??0wxStringBase@@QAE@PB_W@Z)". base.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl wxOnAssert(wchar_t const *,int,char const *,wchar_t const *,wchar_t const *)" (?wxOnAssert@@YAXPB_WHPBD00@Z)" in Funktion ""public: __thiscall wxStringBase::wxStringBase(class wxStringBase const &)" (??0wxStringBase@@QAE@ABV0@@Z)". base.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxEmptyString" (?wxEmptyString@@3PB_WB)". C:\Users\Erik\Documents\Visual Studio 2008\Projects\wxWdgetTest2\Debug\wxWdgetTest2.exe : fatal error LNK1120: 7 nicht aufgelöste externe Verweise. Das Buildprotokoll wurde unter "file://c:\Users\Erik\Documents\Visual Studio 2008\Projects\wxWdgetTest2\wxWdgetTest2\Debug\BuildLog.htm" gespeichert. wxWdgetTest2 - 8 Fehler, 0 Warnung(en) ========== Alles neu erstellen: 0 erfolgreich, Fehler bei 1, 0 übersprungen ==========
-
hast du in Eigenschaften - präprozessor WXUSINGDLL definiert?
Es bietet sich übrigens immer an, wenn man ein funktionierendes Projekt hat, dieses mit dem neuen zu vergleichen, was denn da anders ist. Wenn nichts anders is, sollte es ja dann auch funktionieren
-
Hallo!
Danke erst einmal für eure Hilfe...leider funktiuoniert es immer noch nicht
Immernoch die selben 8 Fehler.Ich werde das jetzt alles nochmal Schritt für Schritt von vorn machen.
Wenn das dann immer noch nicht funktioniert, liegts ja vielleicht an diesem Beispiel, was ich hier die ganze Zeit versuche zum laufen bringen (s.o.).
Hat von euch vielleicht jemand ein kleines Beispiel, welches ungefähr genauso aufgebaut ist, ihr euch aber sicher seit, dass es funktioniert.
Ich will das wxWidgets hier unbedingt zum laufen bringen...und wenn es mein ganzes Leben dauert
Grüße Erikly!
-
hier mal ein minimalbeispiel: (ich habs nicht kontrolliert, könnten syntaxfehler drin sein).
#include <wx/wx.h> class app : public wxApp { public: bool OnInit() { wxMessageBox("Geht"); return false; } } IMPLEMENT_APP(app)
Aber ich denke nicht, dass dein Beispiel ne Macke hat, muss an was anderen liegen.
-
Hallo,
Erikly schrieb:
Ich will das wxWidgets hier unbedingt zum laufen bringen...und wenn es mein ganzes Leben dauert
Dann haben wir (hoffentlich) noch lang genug Zeit, das Problem zu lösen
Das Problem hängt wahrscheinlich mit UNICODE zusammen, siehe dazu auch hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-205559.html
MfG,
Probe-Nutzer
-
JAA!!
Es funktioniert!!
Da kann ich ja doch noch was für mein restliches Leben einplanen
Hat am Unicode gelegen...!
Danke euch nochmal!
-
aber nach der Definition von WXUSEDLL (wo findet man eigentlich einen Hinweis darauf?) habe ich nur noch zwei Fehlermeldungen, die aber mit einem Modul zusammenhängen das ich benutze:
wxSerialize:_ConvertFromIeeeExtended