lordnoxx hat geschrieben:Hallo zusammen,
Hallo
lordnoxx hat geschrieben:Nun zu meinem Problem. Die Software die ich da schreiben muss, soll am Ende als eine einzige, eigenständige exe-Datei (Windows) vorliegen. Ich bin jetzt nicht so der Profi im Proggen, aber ich denke ich gehe hier recht in der Annahme, dass ich dafür dann irgendwelche Libraries von Wxwidgets statisch mit in die exe linken muss.
Wenn du willst, dass du eine einzige .exe hast, musst du mit statischen Bibliotheken linken. Alternativ dazu kannst du die Bibliothek auch Dynamisch (als DLL) dazulinken, dann müssen aber die DLL-Dateien immer im Verzeichnis der .exe liegen (oder woanders auf dem %Path%).
lordnoxx hat geschrieben:Nun zu meinem Problem. Die Software die ich da schreiben muss, soll am Ende als eine einzige, eigenständige exe-Datei (Windows) vorliegen. Ich Habe zum Thema auch schon etwaige dinge im Netz gefunden, aber irgendwie komme ich damit nicht klar. Und was hat das außerdem mit der Art und Weise zu tun, wie WxWidgets selbst gebaut wurde.
Wie gesagt schreibe ich gerade an dem Artikel, wie man wxWidgets tatsächlich baut. Er ist noch nicht fertig, aber ich habe zumindest die verschiedenen Konfigurationsmöglichkeiten beschrieben. Du findest ihn hier:
http://www.proggen.org/doku.php?id=gui:wx:buildlib
Jetzt habe ich leider keine Zeit, aber ich hoffe dass ich ihn morgen oder heute fertigstellen kann.
Da gibt es ja dieses Kommando das man im Netz findet:
Code: Alles auswählen
mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release clean
Das ist schon ziemlich gut (bis auf das clean am ende). Du musst dieses Kommando unter %wxWidgets_ROOT%/build/msw ausführen, wenn du GCC auf dem Pfad hast. Das baut die Bibliotheken mit den angegebenen Einstellungen (eine Erklärung der Einstellungen findest du in meinem
Artikel).
lordnoxx hat geschrieben:Und dann würde mich natürlich interessieren, wie dieses Statische Linken dann funktioniert, und was ich dazu eventuell in code::blocks einstellen muss.
Bei Code::Blocks kenne ich mich wiederum nicht aus, und hoffe auf ein Bisschen Unterstützung durch meine Forenkollegen

Es geht in jedem Fall darum, dass a) die wxWidgets Headerdateien (*.h), b) die wxWidgets Konfigurationsheader (lib/mswud/*.h) und die Bibliotheken selbst (*.lib/*.a/*.dll) dort liegen woe Code::Blocks sie findet.
Leider benötigt wxWidgets noch ziemlich viele Compilerflags um korrekt gebaut zu werden. Unter Linux gibt es dazu das Tool "wx-config", wie unten von Xin erwähnt. Dieses gibt die benötigten Flags aus.
Dieses gibt es Standardmäßig nicht für Windows, es gibt aber eine Inoffizielle Version hier:
http://sites.google.com/site/wxconfig/
Ich persönlich baue mit "CMake", das funktionen für das korrekte Einbinden von wxWidgets bereit stellt.
Das Programm muss auch auf anderen Rechnern unter win2000, WinXP, Win Vista und Win 7 laufen. Müsste ich dazu nicht auch die C++ laufzeit Libs statisch linken? Hatte da nämlich etwas bzgl. der mingwm10.dll gelesen.
Die mingwm10.dll benötigst du, wenn du mit einem alten MinGW-Release (GCC 3.5) baust. Baust du mit einer neueren Version (z.B. TDM-GCC) benötigst du diese DLL nicht mehr.
Baust du mit Visual Studio, musst du die Entsprechende Runtime Bibliothek beilegen (msvcrt80.dll/msvcrt90.dll/msvcrt100.dll). Achtung! Baust du mit Visual Studio 2010, wird auf dem Rechner für den du kompilierst mindestens Windows XP SP2 benötigt!
Ich hoffe das hilft ein Bisschen. Der Rest des Artikels kommt in naher Zukunft.
mfg, fat-lobyte
Haters gonna hate, potatoes gonna potate.