[GELÖST] SFML LNK2019 Error



  • Hallo zusammen,

    ich hoffe mal das hier ist der richtige Bereich dafür...
    ich habe erst vor etwa 2 Monaten mit C++ begonnen aber ich möchte etwas mit Grafischer Oberfläsche experimentieren. So sties ich auf SFML.

    Nun, das problem das ich habe, haben auch schon viele andere gehabt. Ich habe vieles ausprobiert aber bei mir funktioniert einfach keine der Fehlerlösungen!
    Ich bin mehrmals dem Tutorial auf SFML gefolgt aber ich versteh einfach nicht meinen Fehler, deshalb liste ich hier mal alle meine Einstellungen auf die ich vorgenommen habe:

    Ich gehe davon aus das ich das Include und Lib verzeichnis richtig verlinkt habe, deshalb lasse ichs aus.

    Ich möchte statisch linken!

    Konfiguration: Alle Konfigurationen
    C/C++
    Präprozessordefinition: SFML_STATIC

    Konfiguration Debug:
    Linker
    Zusätzliche Abhängigkeiten:

    sfml-audio-s-d.lib
    sfml-graphics-s-d.lib
    sfml-network-s-d.lib
    sfml-system-s-d.lib
    sfml-window-s-d.lib

    Konfiguration Release:
    Linker
    Zusätzliche Abhängigkeiten:

    sfml-audio-s.lib
    sfml-graphics-s.lib
    sfml-network-s.lib
    sfml-system-s.lib
    sfml-window-s.lib

    Ich habe es an einem kleinen Codeauschnitt versucht den ich aus der SFML Documentation habe:

    #include <iostream>
    #include <SFML\Graphics.hpp>
    
    using namespace sf;
    
     int main()
     {
    	// Create the main window
        sf::RenderWindow window(sf::VideoMode(1024, 800), "SFML window");
     }
    

    Und die Fehlermeldungen die ich bekomme:

    1>------ Erstellen gestartet: Projekt: SFML Übungen, Konfiguration: Debug Win32 ------
    1> main.cpp

    1>sfml-window-s-d.lib(VideoModeImpl.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__EnumDisplaySettingsA@12" in Funktion ""public: static class std::vector<class sf::VideoMode,class std::allocator<class sf::VideoMode> > __cdecl sf::priv::VideoModeImpl::getFullscreenModes(void)" (?getFullscreenModes@VideoModeImpl@priv@sf@@SA?AV?vector@VVideoMode@sf@@V?vector@VVideoMode@sf@@V?allocator@VVideoMode@sf@@@std@@@std@@XZ)".

    1>sfml-window-s-d.lib(WglContext.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__CreateWindowExA@48" in Funktion ""public: __thiscall sf::priv::WglContext::WglContext(class sf::priv::WglContext *)" (??0WglContext@priv@sf@@QAE@PAV012@@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__CreateWindowExA@48".

    1>sfml-window-s-d.lib(WglContext.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DestroyWindow@4" in Funktion ""public: virtual __thiscall sf::priv::WglContext::~WglContext(void)" (??1WglContext@priv@sf@@UAE@XZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__DestroyWindow@4".
    1>sfml-window-s-d.lib(WglContext.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ShowWindow@8" in Funktion ""public: __thiscall sf::priv::WglContext::WglContext(class sf::priv::WglContext *)" (??0WglContext@priv@sf@@QAE@PAV012@@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__ShowWindow@8".

    1>sfml-window-s-d.lib(WglContext.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetDC@4" in Funktion ""public: __thiscall sf::priv::WglContext::WglContext(class sf::priv::WglContext *)" (??0WglContext@priv@sf@@QAE@PAV012@@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetDC@4".

    1>sfml-window-s-d.lib(WglContext.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ReleaseDC@8" in Funktion ""public: virtual __thiscall sf::priv::WglContext::~WglContext(void)" (??1WglContext@priv@sf@@UAE@XZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__ReleaseDC@8".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__TrackMouseEvent@4" in Funktion ""private: void __thiscall sf::priv::WindowImplWin32::processEvent(unsigned int,unsigned int,long)" (?processEvent@WindowImplWin32@priv@sf@@AAEXIIJ@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__TranslateMessage@4" in Funktion ""protected: virtual void __thiscall sf::priv::WindowImplWin32::processEvents(void)" (?processEvents@WindowImplWin32@priv@sf@@MAEXXZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DispatchMessageA@4" in Funktion ""protected: virtual void __thiscall sf::priv::WindowImplWin32::processEvents(void)" (?processEvents@WindowImplWin32@priv@sf@@MAEXXZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__PeekMessageA@20" in Funktion ""protected: virtual void __thiscall sf::priv::WindowImplWin32::processEvents(void)" (?processEvents@WindowImplWin32@priv@sf@@MAEXXZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SendMessageA@16" in Funktion ""public: virtual void __thiscall sf::priv::WindowImplWin32::setIcon(unsigned int,unsigned int,unsigned char const *)" (?setIcon@WindowImplWin32@priv@sf@@UAEXIIPBE@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DefWindowProcA@16" in Funktion ""private: static long __stdcall sf::priv::WindowImplWin32::globalOnEvent(struct HWND__ *,unsigned int,unsigned int,long)" (?globalOnEvent@WindowImplWin32@priv@sf@@CGJPAUHWND__@@IIJ@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DefWindowProcW@16" in Funktion ""private: static long __stdcall sf::priv::WindowImplWin32::globalOnEvent(struct HWND__ *,unsigned int,unsigned int,long)" (?globalOnEvent@WindowImplWin32@priv@sf@@CGJPAUHWND__@@IIJ@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__CallWindowProcA@20" in Funktion ""private: static long __stdcall sf::priv::WindowImplWin32::globalOnEvent(struct HWND__ *,unsigned int,unsigned int,long)" (?globalOnEvent@WindowImplWin32@priv@sf@@CGJPAUHWND__@@IIJ@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__RegisterClassA@4" in Funktion ""private: void __thiscall sf::priv::WindowImplWin32::registerWindowClass(void)" (?registerWindowClass@WindowImplWin32@priv@sf@@AAEXXZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__RegisterClassW@4" in Funktion ""private: void __thiscall sf::priv::WindowImplWin32::registerWindowClass(void)" (?registerWindowClass@WindowImplWin32@priv@sf@@AAEXXZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__UnregisterClassA@8" in Funktion ""public: virtual __thiscall sf::priv::WindowImplWin32::~WindowImplWin32(void)" (??1WindowImplWin32@priv@sf@@UAE@XZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__UnregisterClassW@8" in Funktion ""public: virtual __thiscall sf::priv::WindowImplWin32::~WindowImplWin32(void)" (??1WindowImplWin32@priv@sf@@UAE@XZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__CreateWindowExW@48" in Funktion ""public: __thiscall sf::priv::WindowImplWin32::WindowImplWin32(class sf::VideoMode,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned int)" (??0WindowImplWin32@priv@sf@@QAE@VVideoMode@2@ABV?basic_string@DU?basic\_string@DU?char_traits@D@std@@V?$allocator@D@2@@std@@I@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SetWindowPos@28" in Funktion ""public: virtual void __thiscall sf::priv::WindowImplWin32::setPosition(class sf::Vector2<int> const &)" (?setPosition@WindowImplWin32@priv@sf@@UAEXABV?$Vector2@H@3@@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetAsyncKeyState@4" in Funktion ""private: void __thiscall sf::priv::WindowImplWin32::processEvent(unsigned int,unsigned int,long)" (?processEvent@WindowImplWin32@priv@sf@@AAEXIIJ@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__MapVirtualKeyA@8" in Funktion ""private: static enum sf::Keyboard::Key __cdecl sf::priv::WindowImplWin32::virtualKeyCodeToSF(unsigned int,long)" (?virtualKeyCodeToSF@WindowImplWin32@priv@sf@@CA?AW4Key@Keyboard@3@IJ@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SetWindowTextA@8" in Funktion ""public: virtual void __thiscall sf::priv::WindowImplWin32::setTitle(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?setTitle@WindowImplWin32@priv@sf@@UAEXABV?basic_string@DU?basic\_string@DU?char_traits@D@std@@V?$allocator@D@2@@std@@@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetClientRect@8" in Funktion ""public: virtual class sf::Vector2<unsigned int> __thiscall sf::priv::WindowImplWin32::getSize(void)const " (?getSize@WindowImplWin32@priv@sf@@UBE?AV?$Vector2@I@3@XZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetWindowRect@8" in Funktion ""public: virtual class sf::Vector2<int> __thiscall sf::priv::WindowImplWin32::getPosition(void)const " (?getPosition@WindowImplWin32@priv@sf@@UBE?AV?$Vector2@H@3@XZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__AdjustWindowRect@12" in Funktion ""public: __thiscall sf::priv::WindowImplWin32::WindowImplWin32(class sf::VideoMode,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned int)" (??0WindowImplWin32@priv@sf@@QAE@VVideoMode@2@ABV?basic_string@DU?basic\_string@DU?char_traits@D@std@@V?$allocator@D@2@@std@@I@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SetCursor@4" in Funktion ""public: virtual void __thiscall sf::priv::WindowImplWin32::setMouseCursorVisible(bool)" (?setMouseCursorVisible@WindowImplWin32@priv@sf@@UAEX_N@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ScreenToClient@8" in Funktion ""private: void __thiscall sf::priv::WindowImplWin32::processEvent(unsigned int,unsigned int,long)" (?processEvent@WindowImplWin32@priv@sf@@AAEXIIJ@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetWindowLongA@8" in Funktion ""public: virtual void __thiscall sf::priv::WindowImplWin32::setSize(class sf::Vector2<unsigned int> const &)" (?setSize@WindowImplWin32@priv@sf@@UAEXABV?$Vector2@I@3@@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SetWindowLongA@12" in Funktion ""public: __thiscall sf::priv::WindowImplWin32::WindowImplWin32(struct HWND__ *)" (??0WindowImplWin32@priv@sf@@QAE@PAUHWND__@@@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__LoadCursorA@8" in Funktion ""public: virtual void __thiscall sf::priv::WindowImplWin32::setMouseCursorVisible(bool)" (?setMouseCursorVisible@WindowImplWin32@priv@sf@@UAEX_N@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__CreateIcon@28" in Funktion ""public: virtual void __thiscall sf::priv::WindowImplWin32::setIcon(unsigned int,unsigned int,unsigned char const *)" (?setIcon@WindowImplWin32@priv@sf@@UAEXIIPBE@Z)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DestroyIcon@4" in Funktion ""public: virtual __thiscall sf::priv::WindowImplWin32::~WindowImplWin32(void)" (??1WindowImplWin32@priv@sf@@UAE@XZ)".

    1>sfml-window-s-d.lib(WindowImplWin32.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ChangeDisplaySettingsA@8" in Funktion ""private: void __thiscall sf::priv::WindowImplWin32::switchToFullscreen(class sf::VideoMode const &)" (?switchToFullscreen@WindowImplWin32@priv@sf@@AAEXABVVideoMode@3@@Z)".

    1>C:\Users\MeinName\documents\visual studio 2012\Projects\SFML Übungen\Debug\SFML Übungen.exe : fatal error LNK1120: 34 nicht aufgelöste Externe

    Hoffe mal das ist nicht zu unübersichtlich! Ich weis das dieser Fehler bei vielen vorkommt und wahrscheinlich auch schon 1000 mal in diesem Forum gestellt wurden! Aber ich blick echt nicht durch!

    Info:
    Visual Studio 2012

    Gruss Linkshaender



  • SFML 1.6 oder 2.0rc? Hast du die Libs selbst kompiliert? Funktioniert es wenn du die dynamische Variante benutzt?



  • Du musst noch weitere Libs eintragen. Die sind üblicherweise bei den zusätzlichen Abhängigkeiten als geerbte Werte (? - kenne die deutsche Bez. nicht) dabei, wenn du den Haken im Fenster nicht herausgenommen hast.

    Wenn du die benötigen Libs selbst herausfinden möchtest:
    Sieh dir die 1. Fehlermeldung an.
    Der Linker will __imp__EnumDisplaySettingsA@12. Das __imp__ und @12 sind Dekoration (wenn du es näher wissen möchtest, beschäftige dich mit DLLs).
    Die Funktion heißt im Grunde EnumDisplaySettingsA.
    Diese suchst du z.B. auf https://msdn.microsoft.com oder per Google. Auf der jeweiligen Seite findest in einer Tabelle im unteren Bereich der Seite die Lib, welche hier die user32.lib ist.
    Dann bau dein Projekt noch mal und wiederhole die Schritte.



  • @Dobi
    Ich benutze 2.0rc. Habs aber nicht selbst kompiliert sondern von jemandem der alle paar Tage mal die sachen Updated. Hab eigentlich nur gutes davon gehört. Darf ich hier nen link dazu posten?

    @EInGast:
    Vielen Dank dieser Trick hat super funktioniert! Ich hab das mit der user32.lib garnicht gewusst. Gibt es noch andere die wichtig sind?

    //Edit
    Vielen Dank es hat jetzt schon funktioniert!! Es kommen aber Fehlermeldungen wenn ich versuche einen anderen Programmabschnitt zu kompilieren:

    #include <SFML/Graphics.hpp>
    
    int main()
    {
        sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
        sf::CircleShape shape(100.f);
        shape.setFillColor(sf::Color::Green);
    
        while (window.isOpen())
        {
            sf::Event event;
            while (window.pollEvent(event))
            {
                if (event.type == sf::Event::Closed)
                    window.close();
            }
    
            window.clear();
            window.draw(shape);
            window.display();
        }
    
        return 0;
    }
    

    Fehler:
    http://pastebin.com/um9r6TEi
    Habs mal dort gepostet damits hier nicht zu unübersichtlich ist.

    Macht diese Fehlermeldung etwas, da es ja trotzdem funktioniert?

    Gruss Linkshaender



  • Das bedeutet praktisch im Endeffekt nur, dass du mit dem Debugger nicht in die SFML-Libs selbst reinsteppen könntest. Sollte also erstmal kein Problem sein.

    Klar, den Link kannst du posten. 🙂



  • Vielen Dank für die netten Antworten! Hatte schon Angst das sich jemand aufregt weil die Frage schon wieder gestellt wurde 😃

    Hier ist der Link! Vieleicht hilfts ja noch jemandem der keine Lust hat, wie ich, das selbst zu compilieren 😃

    http://sfml.my-gate.net/downloads.html

    Gruss Linkshaender


Anmelden zum Antworten