StaticLibraries von WxWidgets mit CodeBlocks nutzen
-
Ich will meine exe-Datein "unabhängig" von den dlls von WxWidgets machen, um solche Fehlermeldungen zu vermeiden:
Die Anwendung konnte nicht gestartet werden, weil wxbase28d_gcc.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben.
Doch irgendwie will es mir nicht recht gelingen. Ich schaff es einfach nicht die libs in CodeBlocks zu linken. Die Suche bei Google riet immernur dazu, gab aber nie Aufschluss wie es in diesem Fall überhaupt funktioniert.
Ich benutze wxPack in der derzeit neusten Version, habe also die StaticLibraries.
wxPack liegt in C:\SourceCode\Libraries\wxWidgets2.8
Könnte mir jmd erklären wie es dort funktioniert, wie ich nicht die dll einbinden muss...
PS: Ich weiß, dass es mein Projekt aufblähen wird...
Fehlermeldung:
-------------- Build: Debug in Alpha ---------------
Compiling: AlphaMain.cpp
Compiling: resource.rc
Compiling: AlphaApp.cpp
Linking executable: bin\Debug\Alpha.exe
C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxmsw28d_core.a(corelib_dlgcmn.o):D:\devel\libraries\wxWidgets2.8.8\build\msw/../../src/common/dlgcmn.cpp:561: undefined reference to\_\_Unwind_Resume' C:\\SourceCode\\Libraries\\wxWidgets2.8\\lib\\gcc\_lib/libwxmsw28d\_core.a(corelib\_dlgcmn.o):D:\\devel\\libraries\\wxWidgets2.8.8\\build\\msw/../../src/common/dlgcmn.cpp:544: undefined reference to
__Unwind_Resume'
C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxmsw28d_core.a(corelib_dlgcmn.o):D:\devel\libraries\wxWidgets2.8.8\build\msw/../../src/common/dlgcmn.cpp:555: undefined reference to\_\_Unwind_Resume' C:\\SourceCode\\Libraries\\wxWidgets2.8\\lib\\gcc\_lib/libwxmsw28d\_core.a(corelib\_dlgcmn.o):D:\\devel\\libraries\\wxWidgets2.8.8\\build\\msw/../../src/common/dlgcmn.cpp:456: undefined reference to
__Unwind_Resume'
C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxmsw28d_core.a(corelib_dlgcmn.o):D:\devel\libraries\wxWidgets2.8.8\build\msw/../../src/common/dlgcmn.cpp:344: undefined reference to\_\_Unwind_Resume' C:\\SourceCode\\Libraries\\wxWidgets2.8\\lib\\gcc\_lib/libwxmsw28d\_core.a(corelib\_dlgcmn.o):D:\\devel\\libraries\\wxWidgets2.8.8\\build\\msw/../../src/common/dlgcmn.cpp:352: more undefined references to
__Unwind_Resume' follow
C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxmsw28d_core.a(corelib_dlgcmn.o):dlgcmn.cpp:(.eh_frame+0x12): undefined reference to\_\_\_gxx\_personality_v0' C:\\SourceCode\\Libraries\\wxWidgets2.8\\lib\\gcc\_lib/libwxmsw28d\_core.a(corelib\_datacmn.o):datacmn.cpp:(.eh\_frame+0x11): undefined reference to
___gxx_personality_v0'
C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxmsw28d_core.a(corelib_gdicmn.o): In function~wxResourceCache': D:\\devel\\libraries\\wxWidgets2.8.8\\build\\msw/../../src/common/gdicmn.cpp:871: undefined reference to
__Unwind_Resume'
D:\devel\libraries\wxWidgets2.8.8\build\msw/../../src/common/gdicmn.cpp:871: undefined reference to\_\_Unwind\_Resume' D:\\devel\\libraries\\wxWidgets2.8.8\\build\\msw/../../src/common/gdicmn.cpp:871: undefined reference to
__Unwind_Resume'
...
-
Hm, also eigentlich geschieht das fast automatisch.
Leg einfach ein neues Projekt an, und dann kannst du das am Anfang direkt wählen.
Wichtig ist dann nur das die Variable ($wx) angelegt ist, afaik. Und da müssen dann die Libs auch liegen
-
Also ich hab für das Verzeichniss "$(#wx)" (ohne Anfürhungszeichen) gewählt und die globale Variable mit CodeBocks gesetzt. Es hat trotzdem keinen erfolg... seltsam das es normal funktioniert, wenn ich die dlls benutze nur bei den libs zickt er rum... -.-
-
Dann schau doch mal was da definiert ist, und ob unter den Projekteinstellungen auch statisch ausgewählt ist.
-
Im "wxWidgets Project"
Please select the Location...:
"$(#wx)" ( ohne "")
Danach im GlobalVariableEditor:
Base: "C:\SourceCode\Libraries\wxWidgets2.8" (dort ist wxWidgets)
^ hier muss glaub ich der fehler liegen, weil seit der neuinstallation kommt die fehlermeldung: "please select valid location"
muss ich "$(#wx)" noch irgendwo anders definieren?
-
Dann schau doch mal was da definiert ist, und ob unter den Projekteinstellungen auch statisch ausgewählt ist.
Was meinst du genau damit? Wo soll ich da nachgucken?
Also die Compiler, Linker und ResourceCompilersind weisen alle auf die Verzeichnisse der in dennen die statischen Bibliotheken liegen (einfach lib\gcc_dll\... in lib\gcc_lib\...). Oder kann man irgendwo noch etwas direkt für statische Bibliotheken einstellen
-
Naja, unter Build Optionen gibts ja die einstellungen für den Linker, da musst du die Libs schon angeben.
-
ich hab jetzt nochma en neues project erstellt in dll und einmal in lib. dll functioniert ohne probleme lib functioniert nicht. hab selber nix dran rumgemacht. also von der ide generiert funktioniert aber trotzdem net.
da sind übrigens libraries angegeben...
-
Habe exakt das gleiche Problem und noch keine Lösung gefunden, hat irgendjemand nen Lösungsvorschlag?
-
das hängt mit sjlj und dwarf2 zusammen... weiß selber nicht so genau, was das ist, aber jedenfalls sind bei euch compiler und wxPack nicht vom selben Typ.
Also: wxWidgets runterladen und selbst kompilieren:C:\wxWidgets-2.8.10\build\msw> mingw32-make -f makefile.gcc BUILD=release MONOLITHIC=1 SHARED=0 UNICODE=0