wxWidgets für Code::Blocks einrichten



  • Hallo,

    ich benutze winXP.
    Ich habe jetzt auf anraten im Forum von wxDev-C++ zu Code::Blocks gewechselt.
    Da ich als GUI-Framework wxWidgets nutzen will, hab ich jetzt bisher folgendes besorgt:
    - aktuelle Code::Blocks nightly build von heute
    - MinGW (das hab ich in Code::Blocks auch zu laufen bekommen)
    - wxWidgets 2.8.4

    dann wollte ich wxWidgets nach einer Anleitung kompilieren mit:

    mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 BUILD=release UNICODE=0

    (vorher hab ich auch den Befehl mit "clean" am Ende ausgeführt)

    das ging dann so ne Weile und nachdem das fertig war, hab ich das Beispiel aus dem wxWidgets-Tutorial aus dem Magazin im Forum geladen.
    Beim komilieren gabs dann folgende Fehler:

    C:\shared\cppcam\wxtest\main.o:main.cpp:(.text+0x121):: undefined reference to `wxFrameNameStr'
    C:\shared\cppcam\wxtest\main.o:main.cpp:(.text+0x14d):: undefined reference to `wxDefaultSize'
    C:\shared\cppcam\wxtest\main.o:main.cpp:(.text+0x155):: undefined reference to `wxDefaultPosition'
    C:\shared\cppcam\wxtest\main.o:main.cpp:(.text+0x205):: undefined reference to `wxMenuBar::wxMenuBar()'
    C:\shared\cppcam\wxtest\main.o:main.cpp:(.text+0x71f):: undefined reference to `wxFrameBase::SetMenuBar(wxMenuBar*)'
    ......... usw
    

    Was nun? Ich kann die Fehler leider nicht interpretieren.

    Jakob


  • Mod

    Hm, hast du die Pfade korrekt eingebunden?
    Es gibt glaub ich sogar eine globale Variable dafür in Code::Blocks.
    Ansonsten müsstest du das unter Linker einstellen können in den Build Options.
    Project -> Build Options -> Search Directories -> Compiler (hier das include Verzeichnis angeben) und -> Linker (hier das Verzeichnis zu den wxLibs angeben).
    Natürlich musst du auch unter Linkersettings die Korrekten Libs angeben.



  • Ich weiß jetzt nicht genau, was du mit korrekte Libs meinst.
    Ich hatte durchaus schon globale Pfade gesetzt:
    Screenshot 1
    und
    Screenshot 2

    Dachte das reicht, dann kommen aber die benannten Fehler aus dem 1. Beitrag.
    Soll ich jetzt unter

    Settings -> Compiler and debugger... -> Linker Settings

    nochwas eintragen?
    Wenn ja was?

    Die ganzen Dateien (*.a) aus %WXWIDGETS%\lib\gcc_dll (wurde beim komppilieren vin wxWidgets erzeugt) unter Linker Settings hinzufüge (habs jetzt statt den *.a Dateien auch mal mit der wxmsw28u_gcc_custom.dll) probiert kommt folgende Fehlerreihe:

    :: Info: resolving wxStringBase::npos       by linking to __imp___ZN12wxStringBase4nposE 
    :: Info: resolving wxFrame::sm_eventTable       by linking to __imp___ZN7wxFrame13sm_eventTableE 
    :: Info: resolving _wxFrameNameStr by linking to __imp__wxFrameNameStr 
    :: Info: resolving _wxDefaultSize by linking to __imp__wxDefaultSize 
    usw......
    

    Wie muss ich die globalen Pfade richtig setzen?



  • Die .a dateien sind schon richtig.
    Die musst du dann noch dem Linker sagen. (die verzeichnisse sagen ihm ja nur wo er suchen soll).
    Ansonsten musst du aber unter windows auch noch andere libs einbinden, wie comdlg32, comctl32, usw.

    Evtl. hilft auch eine Suche im Code::blocks forum 😉



  • Also hab jetzt in diesem Thread gelesen, dass bestimmte Libs einzeln gelinkt werden müssen (darunter hab ich verstanden die einzeln unter "Linker settings" hinzuzufügen)

    Also gelinkt sind:

    aus %MinGW%\lib

    libwinmm.a
    libkernel32.a
    libuser32.a
    libgdi32.a
    libwinspool.a
    libcomdlg32.a
    libcomctl32.a
    libadvapi32.a
    libshell32.a
    libole32.a
    liboleaut32.a
    libuuid.a
    libodbc32.a
    libodbccp32.a

    aus %wxWidgets%\lib\gcc_dll

    libwxmsw28u.a

    Leider noch die gleichen Fehler! (beginnend mit)

    :: Info: resolving wxStringBase::npos       by linking to __imp___ZN12wxStringBase4nposE
    

    Ich verstehe nicht, warum ich die Verzeichnisse zu den Libs angeben muss, weil ich unter Linker Settings doch die kompletten Pfade eintrage.

    Danke für die geduldige Hilfe.


Anmelden zum Antworten