Программа не может запуститься, потому что cygwin1.dll отсутствует ... в Eclipse CDT - PullRequest
35 голосов
/ 19 июля 2011

Eclipse для Java у меня на компьютере несколько лет, и я решил установить CDT и изучить C. Я установил MinGW и Cygwin, и CDT обнаруживает и пытается использовать их, когда я делаю новый проект.

Я выбираю File > New C++ Project и выбираю Hello World C++ Project и CygwinGCC набор инструментов. Я называю проект asdf и нажимаю «Build Debug» на панели инструментов. Компилятор завершает работу без ошибок. Я нажимаю Run и ничего не происходит.

При просмотре каталога проекта вручную и запуске asdf.exe выдается сообщение об ошибке:
"The program can't start because cygwin1.dll is missing from your computer. Try reinstalling the program to fix this problem."

То же самое происходит с использованием MinGW, отсутствует только другая DLL.
Что мне нужно сделать, чтобы получить .exe-файл?
(Я использую Windows 7 x64 и новейшую версию Eclipse и CDT.)

EDIT: Вывод компилятора выглядит следующим образом:

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

Ответы [ 2 ]

63 голосов
/ 19 июля 2011

Это сообщение об ошибке означает, что Windows не может найти "cygwin1.dll". Программы, создаваемые Cygwin gcc, зависят от этой DLL. Файл является частью Cygwin, поэтому, скорее всего, он находится в C: \ cygwin \ bin. Чтобы решить проблему, все, что вам нужно сделать, это добавить C: \ cygwin \ bin (или место, где можно найти cygwin1.dll) в системный путь. Или вы можете скопировать cygwin1.dll в вашу директорию Windows.

Существует замечательный инструмент под названием DependencyWalker , который можно загрузить с http://www.dependencywalker.com. Вы можете использовать его для проверки зависимостей исполняемых файлов, поэтому если вы проверяете вашу сгенерированную программу, она сообщает, какие зависимости отсутствуют, а какие разрешены.

1 голос
/ 03 декабря 2018

Вы можете скомпилировать либо Cygwin's g++, либо MinGW (через автономный пакет или пакет Cygwin).Однако для его запуска необходимо добавить Cygwin1.dll (и другие) PATH в system Windows PATH перед любыми путями в стиле cygwin.

Таким образом добавьте: ;C\cygwin64\bin к end вашей переменной Windows system PATH.

Также,для компиляции для использования в CMD или PowerShell вам может понадобиться:

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

(при этом запускается кросс-компилятор, если он установлен.)

...