Подтвердить что ты не робот

Программа не может запускаться из-за отсутствия cygwin1.dll... в Eclipse CDT

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

Я выбираю File > New C++ Project и выбираю Hello World C++ Project и CygwinGCC toolchain. Я называю проект "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 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
4b9b3361

Ответ 1

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

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

Ответ 2

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

Таким образом, добавьте ;C\cygwin64\bin в конец переменной PATH системы Windows.

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

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

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