Hallo liebe Programmierer,
ich bin dabei C++ zu erlernen und habe schon einige Schwierigkeiten gehabt, die ich aber alleine lösen konnte. Da ich viele Eigenheiten und Prinzipien von C++ noch nicht durchschaut habe, muss ich jedoch Rat von euch hinzuziehen.
Problem:
Grundsätzlich ist mein Problem, dass ich beim ausführen eines C++-Programmes, dass mit MinGW32 (Version 4.6.2) kompiliert wurde, folgenden Fehler bekomme: Programm kann nicht ausgeführt werden, weil
libgcc-s-dw2-1.dll auf dem Computer fehlt. Darauf hin habe ich mich auf die suche nach dem Problem gemacht... Ich verwende eine Bibliothek: SFML, die ich selbst mit CMake und MinGW32 für meinen Compiler kompatibel kompiliert habe. Mein Programm wird mit folgenden Parametern kompiliert:
|
Quellcode
|
1
|
g++ -static quelle.cpp -o .\exe\test.exe -lsfml-graphics -lsfml-system -lsfml-window
|
Bisheriger Lösungsweg:
- Um mein Problem zu lösen habe ich mein Problem bei Google gesucht. Dabei ist mir folgender Lösungsweg aufgefallen: beim Kompilieren -static als Argument übergeben. Das habe ich getan. Leider bestand das Problem.
- Zum testen habe ich eine neue Datei erstellt und kompiliert, ohne Bibliotheken einzubinden. Es hat super funktioniert, ohne die Fehlermeldung. Also muss es an der, von mir kompilierten, Bibliothek (SFML) liegen...
- Nun habe ich Stunden mit verschiedensten Suchen bei Google verbracht, ohne direkt fündig zu werden. Irgendwann kam ich auf eine Seite, auf der angedeutet wurde, dass es an verwendeten dynamischen Bibliotheken (*.dll's) liegen könnte, da diese eventuell nicht mit dem Argument -static kompiliert wurden.
- Nun wollte ich die SFML-Bibliothek erneut kompilieren, allerdings mit dem Argument -static. Leider habe ich festgestellt, dass es nicht möglich ist...
Meine Frage an euch:
Wie kann ich die Meldung umgehen? Bzw. wie löst ihr das Problem? Ich weiß, dass ich die besagte *.dll einfach in das Verzeichnis meines Programmes kopieren könnte, allerdings weiß ich nicht, wie das mit der Lizenz aussieht? Ich habe irgendwo gelesen, dass man, warum auch immer, nur berechtigt ist, die *.dll statisch zu linken und nicht dynamisch? Stimmt das? Oder kann m
an die MinGW32 spezifischen *.dll's einfach mit einer Lizenz in den Ordner des Programms kopieren?
Vielen Dank schon mal und ein lieber Gruß,
JanB.