SFML Static Error



  • Hello,

    ich werd mal versuchen mein Problem so gut es geht zu umschreiben und hoffe jemand kann mir helfen. Gestern wollte ich zum ersten mal die SFML in ein Projekt einbinden und hatte mir das Tut von sfml-dev.org durchgelesen, sowie im laufe des verzweifelns auch diverse Youtube-Videos zum Thema angesehen. Ich kann das inzwischen theoretisch schon im Schlaf.

    Dennoch habe ich jedesmal Fehlermeldungen wenn ich z.B. ein einfaches RenderWindow ausgeben will. Ich hab inzwischen rausgefunden, dass der Fehler mit den DLL Dateien in Verbindung steht.

    Ich habe als zusätliche Präprozessor Definition SFML_STATIC hinzugefügt aber solange die libs mit -s eingetragen sind geht nichts. Entferne ich das -s und kopiere die DLL Dateien aus dem SFML Ordner in den Projektordner (wie es in einem Tutorial beschrieben war) funktioniert es.

    Ich verstehe den Fehler nicht der hier vorliegen könnte aber ich glaube nicht das es Ziel ist die DLL Dateien zu verschieben.



  • Was heisst denn "gehts nichts" konkret?



  • Geht nichts soll heißen der Compiler listet mir nur jede menge fehler auf. 117 um genau zu sein die bei groben durchsehen alle mit "Nicht ausgelöstes externes Symbol" anfangen.



  • SaNK schrieb:

    Geht nichts soll heißen der Compiler listet mir nur jede menge fehler auf. 117 um genau zu sein die bei groben durchsehen alle mit "Nicht ausgelöstes externes Symbol" anfangen.

    Also linkst Du nicht die richtigen Libraries.

    Aus den FAQ geht z.B. hervor, dass system (sfml-system-s ) immer mitgelinkt werden muss. Machst Du das?

    Wenn Du was sehen willst, dann wahrscheinlich auch noch sfml-window-s und mindestens eine von opengl32 winmm gdi32 . Was ist damit?



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) 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.



  • Meine Einträge für debug sind

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

    Bei release dann natürlich ohne -d. Von den Abhängigkeiten habe ich keine sepperat eingetragen. Von sfml immer diese 5, da es so auch in wirklich jedem Video das ich gesehen habe genau so gemacht wurde.

    Abgesehen von einem, der macht genau das was bei mir auch funktioniert.

    Hier ist z.B. der erste Weg den ich versucht habe. https://www.youtube.com/watch?v=nWOHHL9H-WI

    Ich benutze übrigens Visual Studio 2015 und die SFML 2.3.2 Visual C++ 14 (2015) - 32-bit evl ist ja auch da ein Problem und ich muss die SFML selber mit CMake schreiben.



  • Wenn ich die FAQ (oben verlinkt - speziell diese: How do I link SFML statically?) richtig lese, musst Du jede einzelne Abhängigkeit explizit einbinden.



  • Ich verstehe den Fehler nicht der hier vorliegen könnte aber ich glaube nicht das es Ziel ist die DLL Dateien zu verschieben.

    Bei dynamischer Verlinkung wäre das genau der richtige Weg. Warum willst du partout statisch linken?



  • SaNK schrieb:

    Geht nichts soll heißen der Compiler listet mir nur jede menge fehler auf. 117 um genau zu sein die bei groben durchsehen alle mit "Nicht ausgelöstes externes Symbol" anfangen.

    Ok hier eine simple Lösung für dein Problem:

    1. Schau das erste dieser Symbole an
    2. Suche aus welcher lib das kommen soll
    3. Linke diese lib korrekt, damit der Fehler verschwindet
    4. Lass den Linker eine neue Liste mit Fehlern ausgeben. Ist diese nicht leer, gehe zu 1.
    5. ???
    6. Profit.



  • Mr X schrieb:

    Bei dynamischer Verlinkung wäre das genau der richtige Weg. Warum willst du partout statisch linken?

    Ok wenn das bei der dynamischen richtig ist dann ok, es hat sich einfach nach ner Notlösung angefühlt die DLL Dateien zu kopieren. Ich will das es statisch funktioniert weil ich das Programm verstehen bzw meinen Fehler finden will.

    Die FAQ habe ich tatsächlich nicht gelesen sondern nur das Tut und dann halt die Videos. Laut FAQ wurden die Abhängigkeiten früher auch automatisch eingebunden was aufgrund von fehlerdezimierng geändert wurde. Ich hab aber nur Videos zu älterne SFML Versionen gefunden. Das klärt meine Verwirrung natürlich auf warum es bei mir nicht funktioniert hat.

    Vielen Dank für die Hilfe werd das später mal testen und im Zweifelsfall die korrekturschleife von TGGC benutzen 😉



  • Guck auch mal bei C++->Codegenerierung->Laufzeitbibliothek, ob da in der sfml-lib und in deinem Projekt das Gleiche gemacht wird.



  • Jockelx schrieb:

    Guck auch mal bei C++->Codegenerierung->Laufzeitbibliothek, ob da in der sfml-lib und in deinem Projekt das Gleiche gemacht wird.

    War schon korrekt eingestellt, führ aber auch zu ner ganzen Reihe fehler wenn nicht.

    Mit dem zusätzlichen einbinden der jeweils abhängigen libs geht jetzt auch alles ohne Fehler.


Log in to reply