Anfängerfragen zu Dev-C++ und wxWidgets



  • Hallo zusammen,

    ich bin ein relativer Anfänger auf dem Gebiet der C++ Programmierung. Und habe eine längere Programmierpause hinter mir. Also bitte nicht die Hände über dem Kopf zusammenschlagen...

    Ich wollte nun auf meinem Rechner (WinXP) mit C++ programmieren und habe mir hierfür Dev-C++ 4.9.9.2 installiert (in C:\Dev-Cpp). Außerdem habe ich auf Empfehlung, um mit Windowsbedienoberflächen arbeiten zu können, wxWidgets installiert und die Bibliotheken erstellt (in C:\Cpp\wxWidgets-2.6.3\lib\gcc_lib).

    Nun wollte ich ein Beispielprogramm von wxWidgets mit Dev-C++ kompillieren was nicht funktionierte. Von Hand im XP cmd-Editor konnte ich über das Makefile die Beispielprogramme aber schon erstellen! Ein Kollege hat mir dann den Tip gegeben, dass die lib-Pfade bei Dev-C++ noch angegeben werden müssen. Also habe ich noch folgende Pfade eingetragen:
    Werkzeuge -> Compiler optionen -> Verzeichnisse -> Programmdateien:
    C:\Dev-Cpp\Bin
    Werkzeuge -> Compiler optionen -> Verzeichnisse -> Bibliotheken:
    C:\Dev-Cpp\lib
    C:\C++\wxWidgets-2.6.3\lib\gcc_lib
    Werkzeuge -> Compiler optionen -> Verzeichnisse -> C-Includes:
    C:\Dev-Cpp\include
    Werkzeuge -> Compiler optionen -> Verzeichnisse -> C++-Includes:
    C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include
    C:\Dev-Cpp\include\c++\3.4.2\backward
    C:\Dev-Cpp\include\c++\3.4.2\mingw32
    C:\Dev-Cpp\include\c++\3.4.2
    C:\Dev-Cpp\include
    C:\C++\wxWidgets-2.6.3\include\wx\msw
    C:\C++\wxWidgets-2.6.3\include\wx
    C:\C++\wxWidgets-2.6.3\build\msw
    C:\C++\wxWidgets-2.6.3\build

    Bei den Projekt Optionen habe ich folgende Verzeichnisse/Linker angegeben:
    Projekte -> Projekt Optionen -> Verzeichnisse -> Bibliotheks-Verzeichnisse:
    C:\C++\wxWidgets-2.6.3\lib\gcc_lib
    Projekte -> Projekt Optionen -> Verzeichnisse -> Include Verzeichnisse:
    C:\C++\wxWidgets-2.6.3\include

    Projekte -> Projekt Optionen -> Parameter -> Linker:
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxzlibd.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_net.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_xml.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxexpatd.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxjpegd.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_adv.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_core.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_html.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_media.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_xrc.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxpngd.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxregexd.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxtiffd.a

    Möchte ich z.B. das Beispielprogramm TEXT kompilieren, so bleibt das Programm hängen während es anzeigt, dass die EXE-Datei erstellte wird. Die ersten fünf Zeilen der Fehlermeldung lauten:
    C:\C++\wxWidgets-2.6.3\lib\gcc_lib\libwxbase26d.a(baselib_log.o)(.text+0xe0c) In function Z10wxLogDebugPKcz': 310 C:\\C++\\wxWidgets-2.6.3\\src\\common\\log.cpp multiple definition ofwxLogDebug(char const*, ...)'
    310 C:\C++\wxWidgets-2.6.3\src\common\log.cpp first defined here
    C:\C++\wxWidgets-2.6.3\lib\gcc_lib\libwxbase26d.a(baselib_filename.o)(.text+0x3573) In function ZN10wxFileName17GetShortcutTargetERK8wxStringRS0\_PS0\_': [Linker error] undefined reference toCoCreateInstance@20'

    Was mache ich falsch?

    Vielen Dank für Eure Hilfe und viele Grüße
    Rolle



  • Nachtrag...

    Hier noch der Inhalt des Makefile.win:

    # Project: wxWidgets
    # Makefile created by Dev-C++ 4.9.9.2

    CPP = g++.exe
    CC = gcc.exe
    WINDRES = windres.exe
    RES =
    OBJ = wxWidgets-samples/text/text.o $(RES)
    LINKOBJ = wxWidgets-samples/text/text.o $(RES)
    LIBS = -L"C:/Dev-Cpp/lib" -L"C:/C++/wxWidgets-2.6.3/lib/gcc_lib" -L"C:/C++/wxWidgets-2.6.3/lib/gcc_lib" -mwindows C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxzlibd.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_net.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_xml.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxexpatd.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxjpegd.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_adv.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_core.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_html.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_media.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_xrc.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxpngd.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxregexd.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxtiffd.a
    INCS = -I"C:/Dev-Cpp/include" -I"C:/C++/wxWidgets-2.6.3/include"
    CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -I"C:/C++/wxWidgets-2.6.3/include/wx/msw" -I"C:/C++/wxWidgets-2.6.3/include/wx" -I"C:/C++/wxWidgets-2.6.3/build/msw" -I"C:/C++/wxWidgets-2.6.3/build" -I"C:/C++/wxWidgets-2.6.3/include"
    BIN = wxWidgets-2.exe
    CXXFLAGS = $(CXXINCS)
    CFLAGS = $(INCS)
    RM = rm -f

    .PHONY: all all-before all-after clean clean-custom

    all: all-before wxWidgets-2.exe all-after

    clean: clean-custom
    ${RM} $(OBJ) $(BIN)

    $(BIN): (OBJ)(OBJ) (CPP) $(LINKOBJ) -o "wxWidgets-2.exe" $(LIBS)

    wxWidgets-samples/text/text.o: wxWidgets-samples/text/text.cpp
    $(CPP) -c wxWidgets-samples/text/text.cpp -o wxWidgets-samples/text/text.o $(CXXFLAGS)

    Grüße Rolle



  • [Linker error] undefined reference to `CoCreateInstance@20' <- Bester Hinweis das ist eine Funktion aus der OLE32.lib.

    WxWidget legt sich über die Win32Api daher brauchst du auch alle Windows-Libs.
    Shell32, Kernel32, OLE, etc.

    Ausserdem ab in richtige Forum XD



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo Zeus,

    vielen Dank für die schnelle Antwort.
    Wahrscheinlich ist die Frage ein wenig dumm, aber wo finde ich denn diese Windows-Bibliotheken? Auf meinem Rechner scheinen sie jedenfalls nicht zu sein... oder ich finde sie einfach nicht! Aber da es mit dem Makefile ja geklappt hat, sollten sie eigentlich vorhanden sein. Eine Suche nach ole32.lib war jedenfalls erfolglos. Ich konnte in C:\windows\system32 lediglich eine ole32.dll Datei finden.
    An welcher Stelle muss ich denn die Bibliotheken einfügen?

    Vielen Dank
    Rolle



  • So, nun habe ich einen Teil der Bibliotheken gefunden (die heißen ja libshel32.a!). Jedenfalls ist die Liste der Fehlermeldungen geschrumpft. Ich habe nun alle Bibliotheken aus dem Verzeichnis C:\Dev-cpp\lib unter "Projekte -> Projekt Optionen -> Parameter -> Linker" hinzugefügt. Nun habe ich noch folgende Fehlermeldungen:
    C:\C++\wxWidgets-2.6.3\lib\gcc_lib\libwxbase26d.a(baselib_log.o)(.text+0xe0c) In function Z10wxLogDebugPKcz': 310 C:\\C++\\wxWidgets-2.6.3\\src\\common\\log.cpp multiple definition ofwxLogDebug(char const*, ...)'
    310 C:\C++\wxWidgets-2.6.3\src\common\log.cpp first defined here
    C:\C++\wxWidgets-2.6.3\lib\gcc_lib\libwxmsw26d_core.a(corelib_window.o)(.text+0x2067) In function ZNK8wxWindow11MSWGetStyleElPm': [Linker error] undefined reference towxSystemOptions::GetOptionInt(wxString const&)'
    C:\C++\wxWidgets-2.6.3\lib\gcc_lib\libwxmsw26d_core.a(corelib_wincmn.o)(.text+0x426) In function ZN12wxWindowBaseC2Ev': [Linker error] undefined reference towxSystemOptions::HasOption(wxString const&)'
    [Linker error] undefined reference to `wxSystemOptions::GetOptionInt(wxString const&)'

    Vielen Dank weiterhin
    Rolle



  • Die kommen mit dem Compiler mit und sollten bei Dev-Cpp in C:\Dev-Cpp\lib zu finden sein.

    Folende libs wirst du wohl brauchen (als Visualstudio-Libs):
    kernel32.lib
    user32.lib
    gdi32.lib (Zeichnungsfunktionen)
    winspool.lib (Druckersupport)
    comdlg32.lib (Common Dialog)
    advapi32.lib
    shell32.lib
    ole32.lib
    oleaut32.lib
    uuid.lib
    odbc32.lib (Datenbank)
    odbccp32.lib

    Die entsprechende Libs find findbar als:
    libkernel32.a in C:\Dev-Cpp\lib.

    Ich hab greade geguckt, wie mal das in Dev-cpp eingibt, aber atm nix gefunden O.o



  • Hallo Zeus,

    entschuldige bitte, ich hatte die Bibliotheken schon gefunden (siehe Beitrag vor Deinem letzten Beitrag). Ich habe mir einfach die Liste der Bibliotheken aus dem Makefile angeschaut und dann entsprechend bei Dev-C++ unter den Projektoptionen eingetragen. Demnach ist die libobdccp32.a wohl nicht notwendig. Aber auch mit habe ich noch genügend Fehlermeldungen. Ich hatte auch einmal alle Bibliotheken aus dem c:\dev-cpp\lib Verzeichnis eingelinkt. Hatte aber auch keinen größeren Erfolg!

    Also mein jetziger Stand ist der aus meinem letzten Beitrag um 15:59:14 Uhr

    Derzeit habe ich folgende Bibliotheken eingelinkt:
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxzlibd.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_net.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_xml.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxexpatd.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxjpegd.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_adv.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_core.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_html.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_media.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_xrc.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxpngd.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxregexd.a
    C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxtiffd.a
    C:/Dev-Cpp/lib/libadvapi32.a
    C:/Dev-Cpp/lib/libcomdlg32.a
    C:/Dev-Cpp/lib/libgdi32.a
    C:/Dev-Cpp/lib/libkernel32.a
    C:/Dev-Cpp/lib/libodbc32.a
    C:/Dev-Cpp/lib/libole32.a
    C:/Dev-Cpp/lib/liboleaut32.a
    C:/Dev-Cpp/lib/librpcrt4.a
    C:/Dev-Cpp/lib/libshell32.a
    C:/Dev-Cpp/lib/libuser32.a
    C:/Dev-Cpp/lib/libuuid.a
    C:/Dev-Cpp/lib/libwinmm.a
    C:/Dev-Cpp/lib/libwinspool.a
    C:/Dev-Cpp/lib/libwsock32.a
    C:/Dev-Cpp/lib/libodbccp32.a

    Viele Grüße
    Rolle



  • Hallo Zeus (oder natürlich auch andere),

    ich bin leider noch immer nicht weiter...

    Heute habe ich aber seltsamer Weise andere Fehlermeldungen. Dabei habe ich nichts verändert:

    Compiler: Default compiler
    Building Makefile: "D:\Daten\Berechnungen\c++\Test\Makefile.win"
    Führt make... aus
    make.exe -f "D:\Daten\Berechnungen\c++\Test\Makefile.win" all
    g++.exe -c wxWidgets-samples/text/text.cpp -o wxWidgets-samples/text/text.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/bits" -I"C:/Dev-Cpp/include/c++/3.4.2/debug" -I"C:/Dev-Cpp/include/c++/3.4.2/ext" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32/bits" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -I"C:/C++/wxWidgets-2.6.3/include/wx/msw" -I"C:/C++/wxWidgets-2.6.3/include/wx" -I"C:/C++/wxWidgets-2.6.3/build" -I"C:/C++/wxWidgets-2.6.3/include"

    In file included from C:/Dev-Cpp/include/c++/3.4.2/ios:49,
    from C:/Dev-Cpp/include/c++/3.4.2/ostream:45,
    from C:/Dev-Cpp/include/c++/3.4.2/iostream:45,
    from C:/C++/wxWidgets-2.6.3/include/wx/ioswrap.h:17,
    from C:/C++/wxWidgets-2.6.3/include/wx/textctrl.h:40,
    from C:/C++/wxWidgets-2.6.3/include/wx/wx.h:64,
    from wxWidgets-samples/text/text.cpp:19:
    C:/Dev-Cpp/include/c++/3.4.2/bits/ios_base.h:181: error: field `_M_msg' has incomplete type

    In file included from C:/Dev-Cpp/include/c++/3.4.2/locale:47,
    from C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:40,
    from C:/Dev-Cpp/include/c++/3.4.2/ostream:545,
    from C:/Dev-Cpp/include/c++/3.4.2/iostream:45,
    from C:/C++/wxWidgets-2.6.3/include/wx/ioswrap.h:17,
    from C:/C++/wxWidgets-2.6.3/include/wx/textctrl.h:40,
    from C:/C++/wxWidgets-2.6.3/include/wx/wx.h:64,
    from wxWidgets-samples/text/text.cpp:19:
    C:/Dev-Cpp/include/c++/3.4.2/bits/locale_facets.tcc: In member function \_InIter std::num\_get<\_CharT, \_InIter>::\_M\_extract\_float(\_InIter, \_InIter, std::ios\_base&, std::\_Ios_Iostate&, std::string&) const': C:/Dev-Cpp/include/c++/3.4.2/bits/locale_facets.tcc:325: error: invalid use of undefined typestruct std::string'
    C:/Dev-Cpp/include/c++/3.4.2/bits/stringfwd.h:56: error: declaration of `struct std::string'

    Das ist jetzt mal der Anfang des Compiler-Berichtes.

    Vielen Dank für Eure Hilfe
    Rolle



  • Ein Tipp, der normalerweise ausreichen sollte:

    http://wxdsgn.sourceforge.net

    Dort findest du eine Dev-C++ Version, die die wxWidgets schon mit dabei hat und zusätzlich auch die Möglichkeit bietet, die GUI mit der Maus zusammenzuklicken.
    Hab die schon mal ausprobiert und funktioniert super.
    Deine ganzen Fehlermeldungen sollten bei dieser Version eigentlich gar nicht mehr auftreten!



  • Hallo Leute,ich hab ein Problem mit devc++, denn ich hab ein Programm geschrieben:

    #define PI 3.14159265
    #include <stdio.h>

    double area(int);

    main()
    {
    int r;
    printf("radii and areas \n");

    for (r=1;r<=100;r++)

    {

    printf("%d - area %f\n", r,area(r));
    }
    }

    double area (int r)
    {
    double a;
    a=r*r*PI;
    return(a);
    }

    Es funktioniert auch alles bis auf die Ausgabe, denn ich seh die Ergebnisse nur ca 1sec lang!
    Kann mir jemand helfen?

    Grüße,
    Fa



  • CoolFa schrieb:

    Es funktioniert auch alles bis auf die Ausgabe, denn ich seh die Ergebnisse nur ca 1sec lang!
    Kann mir jemand helfen?

    Das ist die absolute Standard-Frage http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html

    Und bitte benutz Code-Tags sfds


Log in to reply