wxWindows-Programm zeigt Fehler in wxWindows-Header-Dateien
-
Hi,
ich bin relativ neu in der Solaris- bzw. Linux-Programmierung. Da ich gerne ein Programm erstellen würde, was auf so vielen Plattformen wie möglich läuft habe ich im Internet nach Lösungsmöglichkeiten für diese Anforderung gesucht. Dabei bin ich auf wxWindows gestoßen. Die Installation von gcc und wxWindows auf der Solaris-8-Maschine hat auch perfekt funktioniert. Wenn ich jetzt allerdings ein Programm mit nur wenigen Zeilen Code kompilieren möchte, erhalte ich von gcc Fehlermeldungen in den Header-Dateien von wxWindows. Ich habe es mit mehreren Beispielen aus dem Internet versucht.
Zu meiner Frage:
Nutzt jemand von euch wxWindows? Wenn ja: Könnte mir jemand vielleicht mal den Code für "das kleine wxWindows-Programm" schicken? Einfach nur Fenster erstellen und offen lassen bis es der Benutzer schließt. Ich habe bei meiner Suche im Internet so viele verschiedene Möglichkeiten gefunden. Und da ich recht neue in dem Bereich der Entwicklung bin, fällt es mir nicht besonders leicht zu beurteilen, welche der Möglichkeiten korrekt sind.Ich nutze Solaris 8. gcc habe ich in der neuesten Version heruntergeladen und installiert. Auch wxWindows habe ich mir in der neuesten Version besorgt und installiert.
Vielen Dank schon mal.
-
wxWindows Hello-World Beispiel:
http://www.wxwindows.org/hello.htmwas erhälst du für Fehler in den Headern? Bei Templates können auch Fehler im Header angezeigt werden, die irgend wo im Code sind (zeigt der gcc dann durch "instantiated from here" an).
-
Ich bin jetzt einfach mal alles genau so wie auf dem von Dir geposteten Link durchgegangen. Bei der Compilierung erhalte ich dann mehrere Syntax-Fehler.
Außerdem folgende Fehler:
Zeile 9: base class 'wxFrame' has incomplete type
Zeile 11: pare error before '&' token
Zeile 12: 'wxCommandEvent' was not declared in this scope
Zeile 12: 'event' was not declared in this scope
Zeile 12: invalid data member initialization
Zeile 12: (use '=' to initialize static data members)
Zeile 12: variable or field 'OnQuit' declared void
Zeile 13: 'wxCommandEvent was not declared in this scope
usw.
Das zieht sich so durch den gesamten Code. Ich glaube, es gibt nur in ca. 7 Zeilen keine Fehlermeldung und das sind die einzigen Zeilen, die ich leer gelassen habe. (Na wenigstens reicht mein Wissen aus, um eine Leerzeile ohne Fehlermeldung zu erstellen)
Ich habe auch einmal versucht das ganze in Sun Forte zum laufen zu bringen. Folgendes Resultat:
Zeile 9: The base "wxFrame" must be a previously defined class or struct.
Zeile 11: ")" expected instead of "&"
Zeile 12: wxCommandEvent in not defined.
Zeile 13: wxCommandEvent is not defined.
usw.Tja, und hier noch der Quellcode, damit man mit den Zeilennummer auch etwas anfangen kann. Wäre echt cool, wenn mir vielleicht noch mal jemand helfen könnte. Danke schon mal.
#include "wx/wx.h" class MyApp: public wxApp { virtual bool OnInit(); }; class MyFrame: public wxFrame { public: MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); DECLARE_EVENT_TABLE() }; enum { ID_Quit = 1, ID_About, }; BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(ID_Quit, MyFrame::OnQuit) EVT_MENU(ID_About, MyFrame::OnAbout) END_EVENT_TABLE() IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { MyFrame *frame = new MyFrame("Hello World", wxPoint(50, 50), wxSize(450, 340)); frame->Show(TRUE); SetTopWindow(frame); return TRUE; } MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) : wxFrame((wxFrame *)NULL, -1, title, pos, size) { wxMenu *menuFile = new wxMenu; menuFile->Append(ID_About, "&About..."); menuFile->AppendSeparator(); menuFile->Append(ID_Quit, "E&xit"); wxMenuBar *menuBar = new wxMenuBar; menuBar->Append(menuFile, "&File"); SetMenuBar(menuBar); CreateStatusBar(); SetStatusText("Welcome to wxWindows!"); } void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) { Close(TRUE); } void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { wxMessageBox("This is a wxWindows Hello World Sample", "About Hello World", wxOK | wxICON_INFORMATION, this); }
-
Also bei mir funktioniert das ohne Probleme! Ich behaupte mal, daß du den Compiler falsch aufrufst
Versuche es mal mit:
g++ -c `wx-config --cflags` Datei.cpp && g++ -o Datei Datei.o `wx-config --libs`
-
Also bei dem ersten Aufruf:
g++ -c `wx-config --cflags` Datei.cpp
erhalte ich schon folgenden Fehler in der ersten Zeile:
bash: wx-config: command not found
Und dann kommen wieder die ganzen Fehlermeldungen wie bereits beschrieben.Muß ich dieses `wx-config --cflags` als Platzhalter verstehen und durch irgendetwas ersetzen? Wenn ja: durch was? Wie gesagt: Ich bin in der Linux-Welt so neu, daß man mich fast als Linux-DAU bezeichnen könnte.
-
Oder:
g++ -c -I/usr/X11R6/lib/wx/include/gtk-2.4 -I/usr/X11R6/include -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES Datei.cpp g++ -o Datei Datei.o -L/usr/X11R6/lib -pthread -lwx_gtk-2.4
-
Zu:
fubar schrieb:
Versuche es mal mit:
g++ -c `wx-config --cflags` Datei.cpp && g++ -o Datei Datei.o `wx-config --libs`
Ich habe festgestellt, daß wx-config in einem Verzeichnis lag, das nicht in meiner Path-Variable integriert ist. Dumm, habe aber etwas gelernt.
Die Fehlermeldungen bei der Ausführung sind allerdings gleich geblieben:
error: base class 'wxFrame' has incomplete type
usw. usw. usw.Zu:
fubar schrieb:
Oder:
g++ -c -I/usr/X11R6/lib/wx/include/gtk-2.4 -I/usr/X11R6/include -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES Datei.cpp g++ -o Datei Datei.o -L/usr/X11R6/lib -pthread -lwx_gtk-2.4
<command line>:12:1: macro names must be identifiers
Und dann wieder die gewohnten Fehlermeldungen von gcc.Kann es sein, daß ich bei der Installation von gcc oder wxWindows Fehler gemacht habe, die sich jetzt so auswirken könnten?
Hoffentlich nicht...
-
Hilft dir das weiter?