Cygwin1.dll «не найден» при запуске программы, написанной на C. Как я могу заставить Windows найти ее? - PullRequest
8 голосов
/ 03 декабря 2008

Итак, я пытаюсь запустить свою первую прогу hello world, написанную на C. Я скомпилировал ее в eclipse и не получил ошибок, но при попытке запустить я получаю:

"Не удалось запустить это приложение, так как cygwin1.dll не был найден."

Я нашел этот пост , который, кажется, указывает, что я должен добавить его в Windows PATH, и я использовал этот , чтобы сделать это. Так что теперь «Путь» в моих переменных окружения имеет «; C: \ cygwin \ bin \ cygwin1.dll», добавленный до конца. Все еще не работает. Кто-нибудь знает, что я могу делать не так? Моя «программа» выглядит так:

#include <stdio.h>

main()
{
    printf("hello, world\n");
}

Ответы [ 4 ]

17 голосов
/ 03 декабря 2008

Переменная среды PATH должна включать каталог, содержащий cygwin1.dll, а не путь к самому cygwin1.dll. Поэтому просто убедитесь, что в PATH есть строка "C:\cygwin\bin".

15 голосов
/ 03 декабря 2008

Кстати, я умоляю не добавлять вслепую каталог, содержащий cygwin1.dll, в системный PATH. Путь ищется последовательно. Если вы обнаружите в пути более старые или более новые версии среды выполнения Cygwin, другие программы, связанные с cygwin1.dll, могут ужасно сломаться (и выяснить, что произошло, нетрудно, если вы не знаете, что ищете другую версию DLL). .)

Что вам нужно сделать, это скопировать cygwin1.dll (и другие библиотеки Cygwin DLL, которые могут потребоваться вашей программе) в каталог, содержащий ваш двоичный файл, а затем создать пустой (нулевой байт) файл с тем же именем, что и у вашего исполняемого файла, но с .local добавлен, т. е. если ваш исполняемый файл mytest.exe, вы создаете файл с именем mytest.exe.local. Это скажет загрузчику PE: сначала искать требуемые библиотеки DLL в том же каталоге, в котором находится ваш двоичный файл, что позволит избежать головной боли в дальнейшем.

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

Добавьте: ;C\cygwin64\bin в конец вашей системы Windows PATH.

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

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

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

0 голосов
/ 18 апреля 2014

У меня была такая же проблема ... Ответ Адама Розенфилда решил ее хорошо. На моем компьютере путь должен быть "C:\cygwin64\bin"

Впервые я не узнал, что моя версия cygwin - 64-битная ... Но совершенно очевидно, что эти небольшие различия в переменной пути решают, будет ли она работать или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...