MinGW64 - Kompilat kann nicht ausgeführt werden

Übersicht Andere Programmiersprachen Allgemein

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: MinGW64 - Kompilat kann nicht ausgeführt werden

BeitragDo, Jun 13, 2019 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

nach Ewigkeiten melde ich mich auch mal wieder - und dann gleich wieder mit einem Problem Rolling Eyes Smile

Ich arbeite zur Zeit mit CodeBlocks und MinGW64. Ich möchte ein Projekt aufbauend auf SFML aufziehen. Das Problem ist, dass ich das Kompilat nur aus CodeBlocks starten kann. Starte ich es über den Explorer, so erhalte ich die Fehlermeldung Zitat:
Das Programm kann nicht gestartet werden, da libgcc_s_seh-1.dll auf dem Computer fehlt. Installieren Sie das Programm erneut, um das Problem zu beheben


Noch etwas besonderes: Das Kompilat besteht aus einer Exe und zwei Dlls. Hier mal das Build-Log für einen Release-Build Zitat:
-------------- Build: Release in EngineDLL (compiler: GNU GCC Compiler)---------------

g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Functions\Funktionen.cpp -o obj\Release\Code\EngineDLL\Functions\Funktionen.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Functions\IDLParser.cpp -o obj\Release\Code\EngineDLL\Functions\IDLParser.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Functions\IniLike.cpp -o obj\Release\Code\EngineDLL\Functions\IniLike.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Functions\Random.cpp -o obj\Release\Code\EngineDLL\Functions\Random.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Functions\Tree2D.cpp -o obj\Release\Code\EngineDLL\Functions\Tree2D.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Manager\AbsKeyManager.cpp -o obj\Release\Code\EngineDLL\Manager\AbsKeyManager.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Manager\KeyStateManager.cpp -o obj\Release\Code\EngineDLL\Manager\KeyStateManager.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Manager\LogManager.cpp -o obj\Release\Code\EngineDLL\Manager\LogManager.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Manager\SFMLManager.cpp -o obj\Release\Code\EngineDLL\Manager\SFMLManager.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Models\DDM2D.cpp -o obj\Release\Code\EngineDLL\Models\DDM2D.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Models\GPUImage.cpp -o obj\Release\Code\EngineDLL\Models\GPUImage.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Models\GPUImageStrip.cpp -o obj\Release\Code\EngineDLL\Models\GPUImageStrip.o
windres.exe -J rc -O coff -i F:\PROGRA~2\PRODUK~1\GitHub\EXTREM~1\Code\ENGINE~1\Res\RESOUR~1.RC -o obj\Release\Code\EngineDLL\Res\resources.res
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Resources\AbsResourceHolder.cpp -o obj\Release\Code\EngineDLL\Resources\AbsResourceHolder.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Resources\AbsResourceManager.cpp -o obj\Release\Code\EngineDLL\Resources\AbsResourceManager.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\Setup.cpp -o obj\Release\Code\EngineDLL\Setup.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\TileMap\AbsMapObject.cpp -o obj\Release\Code\EngineDLL\TileMap\AbsMapObject.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\TileMap\Tile.cpp -o obj\Release\Code\EngineDLL\TileMap\Tile.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\TileMap\TileMap.cpp -o obj\Release\Code\EngineDLL\TileMap\TileMap.o
g++.exe -Wall -std=c++1z -D__ENGINEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\EngineDLL\TileMap\TileSet.cpp -o obj\Release\Code\EngineDLL\TileMap\TileSet.o
g++.exe -shared -Wl,--output-def=bin\Release\libengine-x64.def -Wl,--out-implib=bin\Release\libengine-x64.a -Wl,--dll -LSFML-2.5.0\lib -L"C:\Program Files (x86)\CodeBlocks\mingw64\bin" obj\Release\Code\EngineDLL\Functions\Funktionen.o obj\Release\Code\EngineDLL\Functions\IDLParser.o obj\Release\Code\EngineDLL\Functions\IniLike.o obj\Release\Code\EngineDLL\Functions\Random.o obj\Release\Code\EngineDLL\Functions\Tree2D.o obj\Release\Code\EngineDLL\Manager\AbsKeyManager.o obj\Release\Code\EngineDLL\Manager\KeyStateManager.o obj\Release\Code\EngineDLL\Manager\LogManager.o obj\Release\Code\EngineDLL\Manager\SFMLManager.o obj\Release\Code\EngineDLL\Models\DDM2D.o obj\Release\Code\EngineDLL\Models\GPUImage.o obj\Release\Code\EngineDLL\Models\GPUImageStrip.o obj\Release\Code\EngineDLL\Resources\AbsResourceHolder.o obj\Release\Code\EngineDLL\Resources\AbsResourceManager.o obj\Release\Code\EngineDLL\Setup.o obj\Release\Code\EngineDLL\TileMap\AbsMapObject.o obj\Release\Code\EngineDLL\TileMap\Tile.o obj\Release\Code\EngineDLL\TileMap\TileMap.o obj\Release\Code\EngineDLL\TileMap\TileSet.o obj\Release\Code\EngineDLL\Res\resources.res -o bin\Release\engine-x64.dll -static-libstdc++ -static-libgcc -static -s SFML-2.5.0\lib\libsfml-graphics.a SFML-2.5.0\lib\libsfml-system.a SFML-2.5.0\lib\libsfml-window.a
Output file is bin\Release\engine-x64.dll with size 879.50 KB

-------------- Build: Release in GameDLL (compiler: GNU GCC Compiler)---------------

g++.exe -Wall -std=c++1z -D__GAMEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\GameDLL\Manager\Game.cpp -o obj\Release\Code\GameDLL\Manager\Game.o
g++.exe -Wall -std=c++1z -D__GAMEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\GameDLL\Manager\Init.cpp -o obj\Release\Code\GameDLL\Manager\Init.o
g++.exe -Wall -std=c++1z -D__GAMEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\GameDLL\Manager\KeyManager.cpp -o obj\Release\Code\GameDLL\Manager\KeyManager.o
g++.exe -Wall -std=c++1z -D__GAMEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\GameDLL\Manager\ResourceManager.cpp -o obj\Release\Code\GameDLL\Manager\ResourceManager.o
windres.exe -J rc -O coff -i F:\PROGRA~2\PRODUK~1\GitHub\EXTREM~1\Code\GameDLL\Res\RESOUR~1.RC -o obj\Release\Code\GameDLL\Res\resources.res
g++.exe -Wall -std=c++1z -D__GAMEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\GameDLL\Resources\ResourceHolder_Image.cpp -o obj\Release\Code\GameDLL\Resources\ResourceHolder_Image.o
g++.exe -Wall -std=c++1z -D__GAMEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\GameDLL\Resources\ResourceHolder_ImageStrip.cpp -o obj\Release\Code\GameDLL\Resources\ResourceHolder_ImageStrip.o
g++.exe -Wall -std=c++1z -D__GAMEDLL -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\GameDLL\Resources\ResourceTypes.cpp -o obj\Release\Code\GameDLL\Resources\ResourceTypes.o
g++.exe -shared -Wl,--output-def=bin\Release\libgame-x64.def -Wl,--out-implib=bin\Release\libgame-x64.a -Wl,--dll -LSFML-2.5.0\lib -L"C:\Program Files (x86)\CodeBlocks\mingw64\bin" obj\Release\Code\GameDLL\Manager\Game.o obj\Release\Code\GameDLL\Manager\Init.o obj\Release\Code\GameDLL\Manager\KeyManager.o obj\Release\Code\GameDLL\Manager\ResourceManager.o obj\Release\Code\GameDLL\Resources\ResourceHolder_Image.o obj\Release\Code\GameDLL\Resources\ResourceHolder_ImageStrip.o obj\Release\Code\GameDLL\Resources\ResourceTypes.o obj\Release\Code\GameDLL\Res\resources.res -o bin\Release\game-x64.dll -static-libstdc++ -static-libgcc -static -s SFML-2.5.0\lib\libsfml-graphics.a SFML-2.5.0\lib\libsfml-system.a SFML-2.5.0\lib\libsfml-window.a bin\Release\libengine-x64.a
Output file is bin\Release\game-x64.dll with size 841.50 KB

-------------- Build: Release in extremehaulingcpp (compiler: GNU GCC Compiler)---------------

g++.exe -Wall -std=c++1z -O2 -std=c++1z -ISFML-2.5.0\include -c F:\Programmierung\Produktion\GitHub\ExtremeHauling\Code\Exe\Main.cpp -o obj\Release\Code\Exe\Main.o
windres.exe -J rc -O coff -i F:\PROGRA~2\PRODUK~1\GitHub\EXTREM~1\Code\Exe\Res\RESOUR~1.RC -o obj\Release\Code\Exe\Res\resources.res
g++.exe -LSFML-2.5.0\lib -L"C:\Program Files (x86)\CodeBlocks\mingw64\bin" -o bin\Release\exthaul.exe obj\Release\Code\Exe\Main.o obj\Release\Code\Exe\Res\resources.res -static-libstdc++ -static-libgcc -static -s SFML-2.5.0\lib\libsfml-window.a SFML-2.5.0\lib\libsfml-system.a SFML-2.5.0\lib\libsfml-graphics.a bin\Release\libgame-x64.a bin\Release\libengine-x64.a
Output file is bin\Release\exthaul.exe with size 832.50 KB
Running target post-build steps
xcopy /Y /I "SFML-2.5.0\bin\sfml-system-2.dll" "bin\Release\"
SFML-2.5.0\bin\sfml-system-2.dll
1 Datei(en) kopiert
xcopy /Y /I "SFML-2.5.0\bin\sfml-window-2.dll" "bin\Release\"
SFML-2.5.0\bin\sfml-window-2.dll
1 Datei(en) kopiert
xcopy /Y /I "SFML-2.5.0\bin\sfml-graphics-2.dll" "bin\Release\"
SFML-2.5.0\bin\sfml-graphics-2.dll
1 Datei(en) kopiert
Process terminated with status 0 (0 minute(s), 27 second(s))
0 error(s), 0 warning(s) (0 minute(s), 27 second(s))


Ein Debug-Build ist auch nur über CodeBlocks direkt ausführbar, mit selbigem Problem.

Ich nutze SFML 2.5.0 sowie MinGW in der Version MinGW-W64-builds-4.3.4

Nachdem ich die libgcc_s_seh-1.dll in das Ausgabeverzeichnis kopiert habe, erhalte ich weiter die Meldung Zitat:
Das Programm kann nicht gestartet werden, da libstdc++-6.dll auf dem Computer fehlt (...)


Kopiere ich diese dll in das Ausgabeverzeichnis, kann die Exe ausgeführt werden.

Könnt ihr mir sagen, was ich falsch mache?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

DivineDominion

BeitragFr, Jun 14, 2019 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Geht es mit einem einfacheren Hello World Programm?

Beispiel eines ähnlichen Fehlers: https://stackoverflow.com/ques...f-the-code
christian.tietze@gmail.com - https://christiantietze.de
macOS
 

CO2

ehemals "SirMO"

BeitragFr, Jun 14, 2019 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ja, ein einfaches Hello-World-Programm funktioniert ohne Probleme, daher schließe ich PATH-Probleme zunächst aus.
Ich habe auch ein neue Projekt aufgebaut, in dem ich ebenfalls eine DLL und eine EXE habe. Die Exe nutzt eine Klasse, die in der DLL zur Verfügung steht. Diese Klasse benutzt std::string als ein Konstruktur-Parameter. Auch das Kompilat dieses Projekts kann ohne Probleme ausgeführt werden.

Noch ein interessantes Detail: Ursprünglich habe ich nicht die Compiler-Flags "-static-libstdc++", "-static-libgcc" und "-static" genutzt. In dem Falle waren die Kompilate im Releasebuild um die 80 KB groß. Nach Setzen der Flags sind alle Teile um die 800 KB groß - sprich: Es wurde irgendetwas statisch reingelinkt, aber scheinbar nicht das richtige.

Ich habe auch mal die Projektdateien von Codeblocks von dem funktionierenden und dem nicht funktionierenden Projekten gegenübergestellt, kann aber bis auf die zu erwartenden Unterschiede im Projektnamen und Ausgabeverzeichnis keine weiteren Unterschiede feststellen.

Den Link hatte ich auch schon gefunden, ich bin mir aber nicht sicher, was mit Zitat:
g++.exe -Wall -c -g main.cpp -o obj\Debug\main.o
g++.exe -static -static-libgcc -static-libstdc++ -o "bin\Debug\Hello World.exe" obj\Debug\main.o
gemeint ist, da das ja im Endeffekt von der IDE übernommen wird, sobald ich dort einen Build anstosse. Zum Vergleich habe ich mir mal den Befehl angeschaut, den Codeblock erzeugt Zitat:
g++.exe -LSFML-2.5.0\lib -L"C:\Program Files (x86)\CodeBlocks\mingw64\bin" -o bin\Release\exthaul.exe obj\Release\Code\Exe\Main.o obj\Release\Code\Exe\Res\resources.res -static-libstdc++ -static-libgcc -static -s SFML-2.5.0\lib\libsfml-window.a SFML-2.5.0\lib\libsfml-system.a SFML-2.5.0\lib\libsfml-graphics.a bin\Release\libgame-x64.a bin\Release\libengine-x64.a

Und meine, dass das identisch ist (bis auf die Teile, die natürlich durch die Projektstruktur und -basis noch dazukommen (beide DLLs sowie SFML)...

EDIT: Zum Vergleich einmal der Build-Befehl zu dem funktionierenden Projekt Zitat:

-------------- Clean: Release in testdll (compiler: GNU GCC Compiler)---------------

Cleaned "testdll - Release"

-------------- Clean: Release in testproj (compiler: GNU GCC Compiler)---------------

Cleaned "testproj - Release"

-------------- Build: Release in testdll (compiler: GNU GCC Compiler)---------------

g++.exe -Wall -std=c++1z -D__TESTDLL -O2 -std=c++1z -c "C:\Users\Marius Otto\Desktop\Test\testdll\testclass.cpp" -o obj\Release\testclass.o
g++.exe -shared -Wl,--output-def=bin\Release\libtestdll.def -Wl,--out-implib=bin\Release\libtestdll.a -Wl,--dll obj\Release\testclass.o -o bin\Release\testdll.dll -static-libstdc++ -static-libgcc -static -s
Output file is bin\Release\testdll.dll with size 817.00 KB

-------------- Build: Release in testproj (compiler: GNU GCC Compiler)---------------

g++.exe -Wall -std=c++1z -O2 -std=c++1z -c "C:\Users\Marius Otto\Desktop\Test\testproj\main.cpp" -o obj\Release\main.o
g++.exe -o bin\Release\testproj.exe obj\Release\main.o -static-libstdc++ -static-libgcc -static -s ..\testdll\bin\Release\libtestdll.a
Output file is bin\Release\testproj.exe with size 811.00 KB
Process terminated with status 0 (0 minute(s), 2 second(s))
0 error(s), 0 warning(s) (0 minute(s), 2 second(s))


(Ich habe auch in dem ursprünglichen Post einen kompletten Rebuild eingefügt, aber die Zeilen "Cleaned (...)" gelöscht Wink
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Thunder

BeitragSa, Jun 22, 2019 1:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Was passiert jetzt, wenn du dieses Programm ausführst? was für eine Fehlermeldung bekommst du?
Immer noch die mit libgcc? Immerhin hast du jetzt den parameter -static-libgcc. Der könnte das fixen. Bitte update uns, was das momentane problem ist.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

CO2

ehemals "SirMO"

BeitragFr, Jul 05, 2019 10:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Also die Fehlermeldungen bleiben bestehen, unabhängig davon, ob ich mit -static, -static-libgcc und/oder -static-libstdc++ linke, oder nicht...

Wenn ich die entsprechenden DLLs (also "libgcc_s_seh-1.dll" und "libstdc++-6.dll") in das Ausgabeverzeichnis kopiere, funktioniert alles - das ist auch mein aktueller Workaround.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group