2011-07-19 11 views
28

Posiadam Eclipse for Java na moim komputerze od kilku lat i postanowiłem zainstalować CDT i nauczyć się C. Zainstalowałem zarówno MinGW a Cygwin i CDT wykrywają i próbują z nich korzystać podczas tworzenia nowego projektu. Wybieram Plik> Nowy projekt C++ i wybieram Hello World C++ Project oraz toolchain CygwinGCC. Nazwa projektu "asdf" i hit "Build Debug" na pasku narzędzi. Kompilator kończy się bezbłędnie. Wciskam Run i nic się nie dzieje. Przeglądanie katalogu projektu ręcznie i uruchamianie programu asdf.exe daje mi komunikat "Program nie może się uruchomić, ponieważ na komputerze brakuje pliku cygwin1.dll. Spróbuj ponownie zainstalować program, aby rozwiązać ten problem". To samo dzieje się przy użyciu MinGW, brakuje tylko innej biblioteki dll. Co muszę zrobić, aby mieć użyteczny .exe? Używam systemu Windows 7 x64 i najnowszej wersji Eclipse i CDT.Program nie może się uruchomić, ponieważ brakuje pliku cygwin1.dll ... w Eclipse CDT

EDIT: Wyjście kompilatora jest następująca:

**** 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 

Odpowiedz

53

Ten komunikat oznacza, że ​​Windows nie jest w stanie znaleźć "cygwin1.dll". Programy tworzone przez Cygwin gcc zależą od tej biblioteki DLL. Plik jest częścią cygwin, więc najprawdopodobniej znajduje się w C: \ cygwin \ bin. Aby rozwiązać problem, wystarczy dodać C: \ cygwin \ bin (lub lokalizację, w której można znaleźć cygwin1.dll) do ścieżki systemowej. Alternatywnie możesz skopiować plik cygwin1.dll do swojego katalogu Windows.

Istnieje ładne narzędzie o nazwie DependencyWalker, które można pobrać z http://www.dependencywalker.com. Możesz go użyć do sprawdzenia zależności plików wykonywalnych, więc jeśli przejrzysz wygenerowany program, dowiesz się, jakich zależności brakuje i które zostały rozwiązane.

+0

Zadziałało! Potrzebował także kilku innych bibliotek dll. Zakładam więc, że jedynym sposobem na to, by zrobić samodzielne .exes jest użycie VisualStudio, to? –

+1

Należy dodać, że można skopiować biblioteki DLL do tego samego katalogu, co plik exe. Exe budowane przez VisualStudio zwykle mają również zależności, np. do MSVCR71.DLL – phlogratos

+0

Okay, ma sens, dzięki! –

Powiązane problemy