FLTK libs in Visual Studio C++ 2010



  • Hey Leute,

    ich habe mit Hilfe des Buches "Einführung in die Programmierung mit C++" von Herrn Stroustrup, die Grundlagen der C++ Programmiertechniken gelernt. Nun bin ich in Kapitel 12 "Anzeigemodelle" angekommen. Es geht somit um GUIs etc.
    Im Anhang des Buches befindet sich eine Erklärung, wie ich die FLTK librarys richtig downloade und integriere....
    Hat alles soweit funktioniert: Die headerdateien funktionieren, doch die libs wollen i-wie nicht so recht....

    Beim komplieren folgenden TestCodes:

    #include <FL/Fl.h>
    #include <FL/Fl_Box.h>
    #include <FL/Fl_Window.h>
    
    int main()
    {
    	Fl_Window window(200, 200, "Fenstertitel");
    	Fl_Box box(0,0,200,200,"Hi, das heißt, Hallo Welt!");
    	window.show();
    	return Fl::run();
    }
    

    Bekomme ich 153 Fehlermeldungen, die alle so aufgebaut sind :"Verweis auf nicht aufgelöstes externes Symbol..."

    Im Buch steht, dass bei solchen Fehlern was bei den Projektkonfigurationen schief gegangen ist? Doch habe ich alles so gemacht wie es das stand.

    Sollte Ihnen dies als Hilfe nicht reichen, wenden Sie sich an einen Freund oder Kollegen"

    Wir sind zwar (noch) keines der beiden, doch würde es mich sehr freuen, wenn jemand einen Rat für mich hätte.

    Mfg Noob_der_Ersten_Stunde



  • Es handelt sich um einen Linker-Fehler. Kompilieren scheint er korrekt, aber er findet die Symbole nicht. Und die befinden sich entweder in einer obj- oder lib-Datei (die ja auch nur ein obj-Archiv ist).

    Hast du denn die binären FLTK-Libraries (die heißen wohl fltk.lib usw.) im Linker angegeben?

    Projekt Einstellungen | Linker | Input | Additional Dependencies

    Dort die lib-Dateien angeben!



  • Ja, ich habe da folgendes angegeben:

    kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;C:\Users\Alexander\Documents\C++\fltk-1.1.9-source\fltk-1.1.9\lib\fltkd.lib;C:\Users\Alexander\Documents\C++\fltk-1.1.9-source\fltk-1.1.9\lib\fltkformsd.lib;C:\Users\Alexander\Documents\C++\fltk-1.1.9-source\fltk-1.1.9\lib\fltkgld.lib;C:\Users\Alexander\Documents\C++\fltk-1.1.9-source\fltk-1.1.9\lib\fltkimagesd.lib;C:\Users\Alexander\Documents\C++\fltk-1.1.9-source\fltk-1.1.9\lib\fltkjpegd.lib;C:\Users\Alexander\Documents\C++\fltk-1.1.9-source\fltk-1.1.9\lib\fltkzd.lib

    die neuen libs mit Dateipfad (?)

    jetzt bekomme ich noch 4 Fehler mit dem selben Inhalt wie oben beschrieben, doch sie kommen alle von der fltkd.lib (FL.obj)

    Grenzt das den Suchradius etwas ein?



  • PS: ich habe die neuen libs beim Angeben einfach hinter die bereits vorhandenen gesetzt....



  • Unter Linker | General | Additional Library Directory kannst du das FLTK-Lib-Verzeichnis angeben. Dann kannst du die Pfade bei den endgültigen Lib-Datei-Angaben weg lassen.

    Poste doch noch die vier Linkerfehler.



  • Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "___WSAFDIsSet@8" in Funktion ""int __cdecl fl_wait(double)" (?fl_wait@@YAHN@Z)". C:\Users\Alexander\Documents\Visual Studio 2010\Projects\gg\gg\fltkd.lib(Fl.obj)
    Fehler 2 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_select@20" in Funktion ""int __cdecl fl_wait(double)" (?fl_wait@@YAHN@Z)". C:\Users\Alexander\Documents\Visual Studio 2010\Projects\gg\gg\fltkd.lib(Fl.obj)
    Fehler 3 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___TrackMouseEvent@4" in Funktion ""long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)". C:\Users\Alexander\Documents\Visual Studio 2010\Projects\gg\gg\fltkd.lib(Fl.obj)
    Fehler 4 error LNK1120: 3 nicht aufgelöste externe Verweise. C:\Users\Alexander\Documents\Visual Studio 2010\Projects\gg\Debug\gg.exe 1



  • Ja, der erste Fehler sagt, das er eine Windows Socket Funktion (WSAFDIsSet) nicht finden kann.

    Hast du dich nur auf den Bjarne verlassen? 😃 Schau mal direkt bei FLTK nach:

    In Visual C++ you will need to tell the compiler where to find the FLTK header files. This can be done by selecting "Settings" from the "Project" menu and then changing the "Preprocessor" settings under the "C/C++" tab. You will also need to add the FLTK (FLTK.LIB or FLTKD.LIB), the Windows Common Controls (COMCTRL32.LIB), and WinSock (WSOCK32.LIB) libraries to the "Link" settings.

    http://www.fltk.org/doc-1.1/basics.html#basics

    Aber im FLTK-Verzeichnis gibt es bestimmt auch ReadMe-Dateien, wo das auch drin steht. Gleich mal dran gewöhnen, Dokumentationen von Libs zu lesen. 😉



  • Danke für die Schnelle antwort, doch ich weiß nun nicht genau was ich im beschriebenen eintrag ändern/einfügen soll?

    C/C++ / Preprocessor

    Dort steht bei mir folgendes unter definition:
    WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)

    Was muss ich da noch verändern?

    Danke für deine Mühe



  • na, du hast anscheinend nicht bis zum Schluß das von mir zitierte durchgelesen. Es ist wirklich nur noch ein Satz, der die entscheidende Info zu deinem Linkerfehler enthält. 🙂



  • Mein Name macht mir grade alle Ehre 😉

    Jetzt gibt es nur noch einen Fehler:

    Fehler 1 error LNK1104: Datei "comctrl32.lib" kann nicht geöffnet werden. C:\Users\Alexander\Documents\Visual Studio 2010\Projects\gg\gg\LINK

    Was läuft da falsch ?



  • PS: Dann müsste das geschafft sein und wir wären erlöst 🙂

    Danke für deine große Hilfe, jetzt brauchts nur noch diesen Finalen Step....



  • Oh mein Gott ! ungalublich !

    Die (verdammte) lib heißr nicht wie in deinem Zitat: comctrl32.lib sonder comctl32.lib 🙂

    Wegen so einem verdammten Buchstabenfehler habe ich mich Stunden aufgehalten.

    Ich danke dir vielmals für deine große Hilfe.

    Mfg Noob



  • hallo, vielleicht könnt Ihr mir helfen. Bin am selben Bsp. Ebenfalls 2010 und Win7 Deutsch.

    Bei mir kommt beim Funktionstest folgende Fehlermeldung, obwohl ich die Verzeichnisse inkludiert habe. Genau die 5 libs, die ich gemäss Buch-Vorschrift als zusätzliche Abhängigkeiten eingeben musste:

    1>LINK : fatal error LNK1104: Datei "fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib" kann nicht geöffnet werden.

    Er scheint Sie also zu finden, kann aber nicht öffnen.

    Was muss ich da noch berücksichtigen? - Wäre dankbar, wenn mir da noch Jemand helfen könnte.



  • Die Bibliotheken müssen ohne Anführungszeichen und mit Semikolon getrennt eingefügt werden. Ist im Buch leider nicht exakt angegeben:

    ...;fltkd.lib;wsock32.lib;comctl32.lib;fltkjpegd.lib;fltkimagesd.lib


Anmelden zum Antworten