rm /cygdrive/d/prj/xxx/cyg*.dll
и проблема, скорее всего, исчезнет go.
То есть у вас есть мошенническая копия cygwin1.dll (и, возможно, других двоичных файлов cygwin) в каталоге d:\prj\xxx\
, которые несовместимы с вашей текущей установкой cygwin. (Или какой-то другой вариант DLL-ада) .
Как правило, когда вы запускаете свой код из оболочки cygwin, вы просто полагаетесь на то, что DLL-библиотеки cygwin загружаются по умолчанию вместо /usr/bin
из LDPATH, PATH или локального каталога.
Затем для распространения вашего EXE-файла пользователям, не являющимся cygwin (или просто для запуска вашего EXE-файла вне оболочки Cygwin), вы упаковываете EXE-файл и все зависимые от него файлы. DLL вместе в одну папку. Как у вас это получается, вы, похоже, смешиваете и сопоставляете местоположения DLL в среде Cygwin и пути к исходному коду.
Затем, чтобы вернуться к параметру командной строки Windows, упакуйте свои EXE и cygwin1 .dll обратно в ту же папку.
И чтобы стереть любые другие сомнения, просто пересоберите свой код и обновите Cygwin до последней версии.