wxWidgets und MS Windows XP
-
Hallo zusammen!
Ich schreibe eigentlich nur GUI-Programme für Linux. Aber weil ein Freund von mir die GUI-Anwendung sehr gefiel, muss ich nun das Programm mit MinGW und wxWidgets auf ein Windows-System neu kompilieren. Ich dachte, es würde keine Probleme geben, da es auf mein und andere Linux-Systeme auch reibungslos funktionierte. Leider habe ich mich geirrt. Zwar konnte die Makefile ausgeführt werden, aber sobald cmd auf `wx-config --cppflags` oder `wx-config --libs --gl-libs` stößt, hört der Spaß auf. Ich vermute cmd kennt das `-Zeichen nicht. Auf jedenfall kommt die Meldung:
g++: `wx-config: No such file or directory cc1plus.exe: error: unrecognized command line option "-fcppflags`"
Was kann ich ändern, damit es auch unter MS Windows XP richtig funktioniert?
Danke für eure Hilfe!
Gruß,
stefan2008
-
Du brauchst entweder eine Shell für Windows, dass diese Syntax erkennt, oder du kompilierst das ganze mit dem MSVC Express. Erst wxWidgets, dann dein Programm.
Wenn Du lieber eine Unix-Style Shell willst, dann lad Dir MSys runter.
rya.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich habe MSYS installiert. Jetzt funktioniert es mit `wx-config --cppflags` und `wx-config --libs --gl-libs`. Ich habe jezt aber ein neues Problem: Die Include-Dateien wie etwa wx/app.h, wx/frame.h, usw. werden nicht gefunden. Gibt es unter MS Windows XP die Möglichkeit ein Prefix einzustellen, damit der Compter weiß, dass er die Include-Dateien unter C:\wxWidgets-2.8.10\include findet? Ich habe keine Lust alle meine Headerdateien für MS Windows extra umzuändern. Danke!
-
Kompilier wxWidgets wie gesagt mit msys mittels configure und make, make install.
Dann werden die Sachen dorthin installiert, wo sie "hingehören".
lg
-
stefan2008 schrieb:
Ich habe MSYS installiert. Jetzt funktioniert es mit `wx-config --cppflags` und `wx-config --libs --gl-libs`. Ich habe jezt aber ein neues Problem: Die Include-Dateien wie etwa wx/app.h, wx/frame.h, usw. werden nicht gefunden. Gibt es unter MS Windows XP die Möglichkeit ein Prefix einzustellen, damit der Compter weiß, dass er die Include-Dateien unter C:\wxWidgets-2.8.10\include findet? Ich habe keine Lust alle meine Headerdateien für MS Windows extra umzuändern. Danke!
Dafür ist doch -I da.
-
Ich habe eine Meldung übersehen:
/bin/sh: wx-config: command not found
Ich habe wxPack installiert. Leider hat es mich auch nicht weitergebracht. Wie kann ich die Option -I in meine Makefile einbauen? Muss ich -IC:\wxWidgets-2.8.10\include oder -I/c/wxWidgets-2.8.10/include eingeben?
Makefile:
CC = g++ CFLAGS = `wx-config --cppflags` CLIBS = `wx-config --libs --gl-libs` BINARY = srbib.out OBJECTS = aboutdlg.o base.o booklabel.o bugdlg.o canvas.o figure.o filestream.o frame.o hintdlg.o licencedlg.o opengl.o splitter.o build: $(OBJECTS) @echo @echo "Das Anwendungsprogramm 'srbib.out' wird gelinkt ..." $(CC) -o $(BINARY) $(CLIBS) $(OBJECTS) -lwx_gtk2_richtext-2.8 %.o: %.cpp $(CC) -c $(CFLAGS) -o $@ $< deinstall: @echo @echo "Die Objektdateien werden entfernt ..." shred -uvn 10 ../obj/*.o @echo "Das Anwendungsprogramm wird entfernt ..." shred -uvn 10 ../bin/$(BINARY) @echo install: @echo @echo "Die Objektdateien werden installiert ..." mv *.o ../obj @echo @echo "Das Anwendungsprogramm wird installiert ..." mv $(BINARY) ../bin @echo
-
Ich habe wxMSW-2.8.10 deinstalliert und mir wxMSW-2.8.10 als ZIP-Datei runtergeladen. ich habe bei MSYS cd /c/../wxMSW-2.8.10 und ./configure --with-msw --enable-unicode eingegeben. Danach wollte ich make und make install ausführen. Leider konnte er keine Makefile finden. Warum muss unter MS Windows alles so kompliziert sein.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich habe mir jetzt wxALL als bz2-Datei runtergeladen es mit tar xfvj wxWidgets-2.8.10.tar.bz2 entpackt. Bin ins Verzeichnis wxWidgets-2.8.10 gegangen und habe configure -q --with-msw --disable-debug --disable-debug_gdb --disable-shared --with-opengl eingegeben. Danach einige Zeit gewartet und make eingegeben, dass diesmal ging. Aber irgend wie wird make wegen ignoring old commands for target '\c\Dokumente' ... overriding commands for target 'und' ignoring old commands for target 'Einstellungen...' abgebrochen. Das Problem ist wahrscheinlich das Leerzeichen, dass eigentlich dazu da ist mehrere Befehle zu trennen. Ich versuche wxWidgets-2.8.10 direkt nach C:\ zu verschieben, vielleicht klappt es dann.
-
Na endlich, es hat funktioniert.
Ich kann jetzt mein Makefile ausführen. Jetzt gibt es nur noch eine Kleinigkeit: -lwx_gtk2_richtext-2.8 kann nicht gefunden werden. Was muss ich tuen? Ich meine GTK2 kennt MS Windows nicht. Was soll ich hier ändern?
-lwx_???_richtext-2.8
-
Das Richtext-Control von M$ (natürlich in der Implementierung von wxWidgets). Siehe dazu die config.h von wxWidgtes, dort muss das natürlich vor dem kompilieren angeschaltet sein, was aber der Fall sein sollte.
rya.
-
Ich hab's gefunden: -lwx_msw_richtext-2.8. Make konnte es zwar linken, aber nach einigen Sekunden bricht er mit folgende Meldung ab:
collect2: ld returned 1 exit status make *** [build] Error 1
-
In die config.h geschaut?
rya.
-
Nein, ich habe es nur vermutet. Der Compiler hat es angenommen und es brauchte einige Sekunden. Aber leider hat er abgebrochen. config.h habe ich im wxWidgets-2.8.10 Verzeichnis nicht gefunden. Dort gibt es nur config ohne die Endung h. Liegt es irgendwo im Unterverzeichnis?
-
Meinst Du vielleicht den Eintrag hier unten von config?
configure:7734: checking for --enable-richtext configure:7766: result: yes
-
Ich glaube, es liegt nicht an wxRichtTextCtrl, dass ich in splitter.ccp eingebaut habe. Ich habe den wxRichTextCtrl auskomentiert und es kam die selbe Fehlermeldnug:
splitter.o: undefine to reference 'wxWindow::...' bzw. 'wxWindowBase::..'
Alles kann ich leider nicht hinschreiben, weil es viele Meldungen gibt. Unter Linux gab es nicht solche Meldungen. Ich konnte unter Linux die Anwendung ohne Probleme starten. Nur MS Windows macht mir momentan ärger!
-
Ich habe mein Makefile ein wenig verändert. Ich glaube es müssen für MS Windows noch einige Bibliotheken hinzugefügt werden, wie etwa -lwx_base-2.8 und -lwx_msw_core-2.8, damit alles richtig funktioniert. Die Objektdateien wurden ohne Probleme erstellt. Stellt sich nur dir Frage welche Bibliotheken von wxWidgets noch fehlen. Kann mir bitte einer weiterhelfen!
Makefile:
CC = g++ CFLAGS = `wx-config --cppflags` CLIBS = `wx-config --libs --gl-libs` BINARY = srbib.exe OBJECTS = aboutdlg.o base.o booklabel.o bugdlg.o canvas.o figure.o filestream.o frame.o hintdlg.o licencedlg.o opengl.o splitter.o build: $(OBJECTS) @echo @echo "Das Anwendungsprogramm 'srbib.exe' wird gelinkt ..." $(CC) -o $(BINARY) $(CLIBS) $(OBJECTS) -lwx_base-2.8 -lwx_msw_core-2.8 -lwx_msw_richtext-2.8 @echo %.o: %.cpp $(CC) -c $(CFLAGS) -o $@ $< deinstall: @echo @echo "Die Objektdateien werden entfernt ..." shred -uvn 10 ../obj/*.o @echo "Das Anwendungsprogramm wird entfernt ..." shred -uvn 10 ../bin/$(BINARY) @echo install: @echo @echo "Die Objektdateien werden installiert ..." mv *.o ../obj @echo @echo "Das Anwendungsprogramm wird installiert ..." mv $(BINARY) ../bin @echo
-
Ich habe wxWidgets-2.8.10, MinGW und MSYS gelöscht und den Visual C++ 2008 Express Edition installiert. Danach habe ich VC wie auf http://www.pronix.de/pronix-1144.html beschrieben eingerichtet. Nun habe ich mein Projekt srbib erstell und meine vorhandene Dateien eingebunden und kompiliert. Nun habe ich folgende Meldung erhalten:
------ Erstellen gestartet: Projekt: srbib, Konfiguration: Release Win32 ------ Verknüpfen... LINK : warning LNK4098: Standardbibliothek "MSVCRTD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden. splitter.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall wxRichTextCtrl::wxRichTextCtrl(class wxWindow *,int,class wxString const &,class wxPoint const &,class wxSize const &,long,class wxValidator const &,class wxString const &)" (??0wxRichTextCtrl@@QAE@PAVwxWindow@@HABVwxString@@ABVwxPoint@@ABVwxSize@@JABVwxValidator@@1@Z)". splitter.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: bool __thiscall wxRichTextBuffer::BeginTextColour(class wxColour const &)" (?BeginTextColour@wxRichTextBuffer@@QAE_NABVwxColour@@@Z)". splitter.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: bool __thiscall wxRichTextBuffer::BeginFontSize(int)" (?BeginFontSize@wxRichTextBuffer@@QAE_NH@Z)". splitter.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: bool __thiscall wxRichTextBuffer::BeginItalic(void)" (?BeginItalic@wxRichTextBuffer@@QAE_NXZ)". splitter.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: bool __thiscall wxRichTextBuffer::BeginBold(void)" (?BeginBold@wxRichTextBuffer@@QAE_NXZ)". wxmsw28d_adv.lib(hyperlink.obj) : error LNK2001: Nicht aufgelöstes externes Symbol ""void __cdecl wxOnAssert(char const *,int,char const *,char const *,char const *)" (?wxOnAssert@@YAXPBDH000@Z)". C:\...\Visual Studio 2008\Projects\srbib\Release\srbib.exe : fatal error LNK1120: 6 nicht aufgelöste externe Verweise. Das Buildprotokoll wurde unter "file://c:\...\Visual Studio 2008\Projects\srbib\srbib\Release\BuildLog.htm" gespeichert. srbib - 7 Fehler, 1 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Was fehlt noch, damit es endlich auch auf MS Windows funktioniert?
-
Das wxWiki hilft hier weiter:
http://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide
rya.