N
Hallo zusammen,
nachdem ich in einem Buch zum erlernen von C++ auf die wxWidgets aufmerksam geworden bin, und nun auch schon viel im I-Net darüber gelesen habe, möchte ich hier für alle die daran auch Interesse haben, eine Lösung beschreiben wie sich die wxWidgets im RAD Studio 2007 unter C++ nutzen lassen.
Die Beschreibung habe ich bei mir mit den aktuellen wxWidgets-2.8.11 getestet.
Ein Formdesigner für die wxWidgets innerhalb des RAD Studios ist da natürlich nicht vorhanden.
Die wxWidgets entpacken (z.B. nach C:\Programme\wxWidgets-2.8.11) oder über das wxMSW-Setup
nach z.B. C:\Programme\ installieren. Nach dem Entpacken bzw. Installieren eine Systemvariable
'WXDIR' mit dem Pfad der wxWidgets anlegen (z.B. C:\Programme\wxWidgets-2.8.11).
Im $(WXDIR) Pfad ins Verzeichnis \build\msw wechseln.
Dann die wxWidgets wie folgt Kompilieren:
Debug: make -f makefile.bcc BUILD=debug SHARED=0 MONOLITHIC=0 UNICODE=0 OFFICIAL_BUILD=1 USE_ODBC=1 USE_OPENGL=1 USE_QA=1
Release: make -f makefile.bcc BUILD=release SHARED=0 MONOLITHIC=0 UNICODE=0 OFFICIAL_BUILD=1 USE_ODBC=1 USE_OPENGL=1 USE_QA=1
Nach dem Kompilieren sollten noch folgende Ergänzungen gemacht werden:
In den 'Setup.h' Dateien die unter $(WXDIR)lib\bcc_lib\msw\wx bzw. unter $(WXDIR)lib\bcc_lib/mswd/wx zu finden
sind müssen für den Linker noch folgende #pragma-Anweisungen eingetragen werden:
in /msw/wx/Setup.h:
#pragma link "wxbase28.lib"
#pragma link "wxbase28_net.lib"
#pragma link "wxbase28_odbc.lib"
#pragma link "wxbase28_xml.lib"
#pragma link "wxexpat.lib"
#pragma link "wxjpeg.lib"
#pragma link "wxmsw28_adv.lib"
#pragma link "wxmsw28_aui.lib"
#pragma link "wxmsw28_core.lib"
#pragma link "wxmsw28_dbgrid.lib"
#pragma link "wxmsw28_gl.lib"
#pragma link "wxmsw28_html.lib"
#pragma link "wxmsw28_media.lib"
#pragma link "wxmsw28_qa.lib"
#pragma link "wxmsw28_richtext.lib"
#pragma link "wxmsw28_xrc.lib"
#pragma link "wxpng.lib"
#pragma link "wxregex.lib"
#pragma link "wxtiff.lib"
#pragma link "wxzlib.lib"
in /mswd/wx/Setup.h:
#pragma link "wxbase28d.lib"
#pragma link "wxbase28d_net.lib"
#pragma link "wxbase28d_odbc.lib"
#pragma link "wxbase28d_xml.lib"
#pragma link "wxexpatd.lib"
#pragma link "wxjpegd.lib"
#pragma link "wxmsw28d_adv.lib"
#pragma link "wxmsw28d_aui.lib"
#pragma link "wxmsw28d_core.lib"
#pragma link "wxmsw28d_dbgrid.lib"
#pragma link "wxmsw28d_gl.lib"
#pragma link "wxmsw28d_html.lib"
#pragma link "wxmsw28d_media.lib"
#pragma link "wxmsw28d_qa.lib"
#pragma link "wxmsw28d_richtext.lib"
#pragma link "wxmsw28d_xrc.lib"
#pragma link "wxpngd.lib"
#pragma link "wxregexd.lib"
#pragma link "wxtiffd.lib"
#pragma link "wxzlibd.lib"
diese werden ganz unten vor '#endif // _WX_SETUP_H_' eingetragen. Ausserdem kann in den Setup.h im Abschnitt
'database classes' noch '#define wxUSE_ODBC' auf 1 gesetzt werden, damit ODBC-Treiber verwendet werden können.
Anschliesend im Rad Studio folgende Einstellungen tätigen:
Tools -> Optionen:
Umgebungsoptionen -> c++-Optionen -> Pfade und Verzeichnisse:
Include-Pfad: $(WXDIR)\include
Bibliothekspfad: $(WXDIR)\lib\bcc_lib
Suchpfad: (WXDIR)\\include\\wx
(WXDIR)\src\common
$(WXDIR)\src\msw
Zum erzeugen einer wxWidgets-Anwendung, muß eine C++ Konsolenanwendung ohne
VCL, ohne Multi-Threads und ohne Konsolenanwendung erstellt werden.
In den Projekt-Optionen müssen dann folgende Build-Konfigurationen vorgenommen werden:
Debug-Build: Include-Pfad: $(WXDIR)\lib\bcc_lib\mswd
Definitionen: __WXMSW__ und __WXDEBUG__
Release-build: Include-Pfad: $(WXDIR)\lib\bcc_lib\msw
Definitionen: __WXMSW__
am besten dafür einmal ein leeres Projekt erstellen und diese Einträge mit 'Standard für neue Projekte' speichern.
Um die ganze Sache zu Testen habe ich einige der mit den wxWidgets mitgelieferten Demos kompiliert.
Grüße Netzschleicher