wxWidgets Installationsproblem



  • Das sind einfach 2 verschiedene Varianten für die Implementierung von Exception-Handling. dwarf2 ist AFAIK nicht auf allen Systemen umsetzbar, dafür gibt es keinen Overhead, falls keine Exception geworfen wird. Beim TDM-GCC werden beide Varianten im Installer angeboten.



  • Danke. Das heißt es gibt für Windows 3 verschiedene 32-Bit Compiler. Zum einen den dwarf2 der mit dem sjlj in dem TDM-GCC Packet von http://tdm-gcc.tdragon.net/ angeboten wird. Und zum anderen den "normalen" MinGW von http://www.mingw.org/, oder ist dieser einer der anderen beiden Varianten? Welche Variante liegt denn C::B bei?



  • Na ja, die von TDM kompilieren den MinGW halt extra. Meistens ein bisschen neuer. Es gibt aber auch noch neuere (ich hab mehrere Links bei Wikipedia gefunden). Bei C::B 10.05 liegt ein TDM-MinGW 4.4.1 mit SJLJ bei.



  • Danke, kannst du mir auch noch meine andere Frage beantworten?

    Noch eine Frage zum Kompilieren. In der Dokumentation von wxWidgets steht, dass ein Programm mit folgenden Parametern kompiliert werden muss:

    g++ hworld.cpp `wx-config --libs` `wx-config --cxxflags` -o hworld

    Macht Code::Blocks das automatisch, wenn das Projekt unter Code::Blocks als wxWidgets project angelegt wurde?



  • DarkBug schrieb:

    Danke, kannst du mir auch noch meine andere Frage beantworten?

    Noch eine Frage zum Kompilieren. In der Dokumentation von wxWidgets steht, dass ein Programm mit folgenden Parametern kompiliert werden muss:

    g++ hworld.cpp `wx-config --libs` `wx-config --cxxflags` -o hworld

    Macht Code::Blocks das automatisch, wenn das Projekt unter Code::Blocks als wxWidgets project angelegt wurde?

    Sorry, hab gar nicht mehr dran gedacht. Ja, das wird automatisch gemacht.



  • Besten Dank. Habe mir mal das TDM-GCC Packet installiert und mir den Ordnerinhalt vom MinGW sowie dem TDM-GCC Packet mal genauer angeschaut (bin Verzeichnis). Was mich irritiert hat. In beiden Verzeichnissen befinden sich zwei exen eines Compilers. Beispiel G++: Sowohl im MinGW (http://www.mingw.org/) als auch im MinGW32 (http://tdm-gcc.tdragon.net/) Verzeichnis befinden sich zum einen eine g++.exe und zum anderen eine mingw32-g++.exe. Mithilfe eines MD5-Checks habe ich herausgefunden, dass alle vier exen einen anderen MD5-Hash haben. Wieso sind in jedem Verzeichnis 2 exen und wo liegt der Unterschied bei allen?

    Source Homepage	Verzeichnisname	Compiler	Applikationstyp	kompilierbar?
    
    http://www.mingw.org/	    MinGW  g++.exe	                Konsole   Ja
    http://www.mingw.org/	    MinGW  g++.exe	                wxWidgets Ja
    http://www.mingw.org/	    MinGW  mingw32-g++.exe            Konsole   Ja
    http://www.mingw.org/	    MinGW  mingw32-g++.exe            wxWidgets Ja
    http://tdm-gcc.tdragon.net/ MinGW32 g++.exe	                Konsole   Ja
    http://tdm-gcc.tdragon.net/ MinGW32 g++.exe	                wxWidgets Nein
    http://tdm-gcc.tdragon.net/ MinGW32 mingw32-g++.exe            Konsole   Ja
    http://tdm-gcc.tdragon.net/ MinGW32 mingw32-g++.exe            wxWidgets Nein
    http://tdm-gcc.tdragon.net/ MinGW64 g++.exe	                Konsole   Ja
    http://tdm-gcc.tdragon.net/ MinGW64 g++.exe	                wxWidgets Nein
    http://tdm-gcc.tdragon.net/ MinGW64 x86_64-w64-mingw32-g++.exe Konsole   Ja
    http://tdm-gcc.tdragon.net/ MinGW64 x86_64-w64-mingw32-g++.exe wxWidgets Nein
    


  • Die exe-Dateien sollten gleich funktionieren, vielleicht ist das deswegen, falls du zwei MinGW-Verzeichnisse in den Path tust, damit du den Compiler trotzdem noch ohne genaue Pfadangabe eindeutig aufrufen kannst.
    Warum du bei wxWidgets mit TDM-GCC nicht kompilierbar hingeschrieben hast, kann ich nicht nachvollziehen.



  • Wenn ich mit dem MinGW32 von http://tdm-gcc.tdragon.net/ das wxWidgets Beispielprojekt kompilieren möchte, bekomme ich folgende Fehler ausgegeben:

    ||=== My, Debug ===|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_app.o):app.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_app.o):app.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_app.o):app.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_app.o):app.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_app.o):app.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_app.o):app.cpp|| more undefined references to_Unwind_Resume' follow|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_app.o):app.cpp:(.eh_frame+0x12)||undefined reference to \_\_gxx\_personality_v0'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_main.o):main.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_main.o):main.cpp:(.eh_frame+0x12)||undefined reference to \_\_gxx\_personality_v0'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_icon.o):icon.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_icon.o):icon.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_icon.o):icon.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_icon.o):icon.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_icon.o):icon.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_icon.o):icon.cpp|| more undefined references to \_Unwind_Resume' follow| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_icon.o):icon.cpp:(.eh\_frame+0x12)||undefined reference to__gxx_personality_v0'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_appcmn.o):appcmn.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_appcmn.o):appcmn.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_appcmn.o):appcmn.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_appcmn.o):appcmn.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_appcmn.o):appcmn.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_appcmn.o):appcmn.cpp|| more undefined references to_Unwind_Resume' follow|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_appcmn.o):appcmn.cpp:(.eh_frame+0x12)||undefined reference to \_\_gxx\_personality_v0'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_gdicmn.o):gdicmn.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_gdicmn.o):gdicmn.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_gdicmn.o):gdicmn.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_gdicmn.o):gdicmn.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_gdicmn.o):gdicmn.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_gdicmn.o):gdicmn.cpp|| more undefined references to \_Unwind_Resume' follow| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_gdicmn.o):gdicmn.cpp:(.eh\_frame+0x12)||undefined reference to__gxx_personality_v0'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_window.o):window.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_window.o):window.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_window.o):window.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_window.o):window.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_window.o):window.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_window.o):window.cpp|| more undefined references to_Unwind_Resume' follow|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_window.o):window.cpp:(.eh_frame+0x12)||undefined reference to \_\_gxx\_personality_v0'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_wincmn.o):wincmn.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_wincmn.o):wincmn.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_wincmn.o):wincmn.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_wincmn.o):wincmn.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_wincmn.o):wincmn.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_wincmn.o):wincmn.cpp|| more undefined references to \_Unwind_Resume' follow| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_wincmn.o):wincmn.cpp:(.eh\_frame+0x12)||undefined reference to__gxx_personality_v0'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_frame.o):frame.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_frame.o):frame.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_frame.o):frame.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_frame.o):frame.cpp|| undefined reference to_Unwind_Resume'|
    C:\wxWidgets2.8\lib\gcc_lib\libwxmsw28_core.a(corelib_frame.o):frame.cpp|| undefined reference to \_Unwind_Resume'| C:\\wxWidgets2.8\\lib\\gcc\_lib\\libwxmsw28\_core.a(corelib\_frame.o):frame.cpp|| more undefined references to_Unwind_Resume' follow|
    ||More errors follow but not being shown.|
    ||Edit the max errors limit in compiler options...|
    ||=== Build finished: 50 errors, 0 warnings ===|



  • Und warum das so ist, habe ich doch erst in diesem Thread erklärt?! Kompilier wxWidgets selber mit dem gleichen Compiler, dann bekommst du solche Probleme nicht.



  • Sorry, ich hatte mich falsch ausgedrückt. Mein Fehler. Ich wollte damit sagen, das sich das wxPack nicht mit dem MinGW32 von http://tdm-gcc.tdragon.net/ kompilieren lässt und nicht generell wxWidgets.

    Nochmal vielen Dank für deine Hilfe. Es funktioniert nun alles.



  • DarkBug schrieb:

    Sorry, ich hatte mich falsch ausgedrückt. Mein Fehler. Ich wollte damit sagen, das sich das wxPack nicht mit dem MinGW32 von http://tdm-gcc.tdragon.net/ kompilieren lässt und nicht generell wxWidgets.

    Nochmal vielen Dank für deine Hilfe. Es funktioniert nun alles.

    Aber du kannst doch dort beim Installer sogar auswählen, ob du SJLJ oder DW2 willst?! Also kannst du das nicht wirklich so schreiben, denn mit einem von den beiden (also wahrscheinlich dw2) wird es ja wohl gehen.



  • Ja, hast Recht. Mit dem dwarf2 funkioniert es. Was ist eigentlich der 64-Bit Compiler für ein Compiler (sjlj oder dwarf2)? Ich frage, weil ich dort nur eine Option auswählen kann.



  • Wenn du hier bei den Individual Packages schaust, siehst du, dass der 64-Bit-MinGW sjlj ist.



  • Danke. Und der MinGW von http://www.mingw.org/ ist dann ein dwarf2, oder?



  • Wenn du wxPack mit dem mingw.org-MinGW und dem TDM-MinGW-dw2 linken kannst, dann wird der von mingw.org wohl auch ein dw2-Compiler sein.



  • Danke. Letzte Frage: Gibt es einen 64-Bit-MinGW-dwarf2 Compiler?



  • DarkBug schrieb:

    Danke. Letzte Frage: Gibt es einen 64-Bit-MinGW-dwarf2 Compiler?

    http://blog.gmane.org/gmane.comp.gnu.mingw.w64.general/month=20100501
    2. Such-Treffer.



  • Achso, danke. Das heißt, wenn ich wxWidgets Programme auf 64Bit Ebene schreiben möchte, komme ich nicht drumherum wxWidgets selber mit einem 64Bit Compiler zu kompilieren. Sehe ich das richtig?


Anmelden zum Antworten