webentwicklung-frage-antwort-db.com.de

Das Programm kann nicht gestartet werden, da cygwin1.dll in Eclipse CDT fehlt

Ich hatte Eclipse für Java auf meinem Computer für ein paar Jahre und entschied mich, das CDT zu installieren und C zu lernen. Ich installierte sowohl MinGW als auch Cygwin und das CDT erkennt und versucht, sie zu verwenden, wenn ich ein neues Projekt mache.

Ich wähle File > New C++ Project und wähle Hello World C++ Project und die CygwinGCC Toolchain. Ich nenne das Projekt "asdf" und drücke "Build Debug" in der Symbolleiste. Der Compiler wird ohne Fehler abgeschlossen. Ich drücke Run und nichts passiert.

Beim manuellen Durchsuchen des Projektverzeichnisses und Ausführen von asdf.exe erhalte ich die Fehlermeldung:
"The program can't start because cygwin1.dll is missing from your computer. Try reinstalling the program to fix this problem."

Das gleiche passiert mit MinGW, nur eine andere DLL fehlt.
Was muss ich tun, um eine verwendbare .exe zu haben?
(Ich verwende Windows 7 x64 und die neueste Version von Eclipse und CDT.)

BEARBEITEN: Die Compiler-Ausgabe sieht wie folgt aus:

**** Build of configuration Debug for project asdf ****

make all 
Building file: ../src/asdf.cpp
Invoking: Cygwin C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/asdf.d" -MT"src/asdf.d" -o"src/asdf.o" "../src/asdf.cpp"
cygwin warning:
  MS-DOS style path detected: C:\Users\Shawn\Dropbox\Eclipse\asdf\Debug
  Preferred POSIX equivalent is: /cygdrive/c/Users/Shawn/Dropbox/Eclipse/asdf/Debug
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
Finished building: ../src/asdf.cpp

Building target: asdf.exe
Invoking: Cygwin C++ Linker
g++  -o"asdf.exe"  ./src/asdf.o   
Finished building target: asdf.exe
36
Shawn Walton

Diese Fehlermeldung bedeutet, dass Windows "cygwin1.dll" nicht finden kann. Die Programme, die der Cygwin gcc erstellt, hängen von dieser DLL ab. Die Datei ist Teil von cygwin, daher befindet sie sich höchstwahrscheinlich in C:\cygwin\bin. Um das Problem zu beheben, müssen Sie lediglich C:\cygwin\bin (oder den Speicherort, an dem sich cygwin1.dll befindet) zu Ihrem Systempfad hinzufügen. Alternativ können Sie cygwin1.dll in Ihr Windows-Verzeichnis kopieren.

Es gibt ein nettes Tool namens DependencyWalker , das Sie von http://www.dependencywalker.com herunterladen können. Sie können es verwenden, um Abhängigkeiten von ausführbaren Dateien zu überprüfen. Wenn Sie also Ihr generiertes Programm untersuchen, erfahren Sie, welche Abhängigkeiten fehlen und welche aufgelöst werden.

66
phlogratos

Sie können entweder mit Cygwins g++ Oder MinGW kompilieren (über Standalone oder mit dem Cygwin-Paket). Um es auszuführen, müssen Sie jedoch den Cygwin1.dllnd andere) PFAD vor den Pfaden im Cygwin-Stil zum Windows-PFAD --- (system hinzufügen.

Fügen Sie also hinzu: ;C\cygwin64\bin an das Ende Ihres Windows-Systems PATH Variable.

Zum Kompilieren für die Verwendung in CMD oder PowerShell müssen Sie möglicherweise Folgendes verwenden:

x86_64-w64-mingw32-g++.exe -static -std=c++11 prog_name.cc -o prog_name.exe

(Dies ruft den Cross-Compiler auf, falls installiert.)

1
not2qubit