所以我正在尝试运行我用C编写的第一个hello world编程。我在eclipse中编译它并且没有错误,但是当我尝试运行它时,我得到:
“此应用程序无法启动,因为找不到cygwin1.dll。”
我发现this post似乎表明我应该将其添加到Windows PATH,我使用this来做到这一点。所以现在我的环境变量中的“Path”已经附加了“; C:\ cygwin \ bin \ cygwin1.dll”。仍然没有工作。任何人都知道我可能做错了什么?我的'程序'看起来像这样:
#include <stdio.h>
main()
{
printf("hello, world\n");
}
答案 0 :(得分:17)
PATH环境变量需要包含包含cygwin1.dll的目录,而不是cygwin1.dll本身的路径。所以只需确保PATH中包含字符串"C:\cygwin\bin"
。
答案 1 :(得分:15)
顺便说一下,我恳求你不要盲目地将包含cygwin1.dll的目录添加到系统PATH中。顺序搜索路径。如果你碰巧在路径中有较旧或较新版本的Cygwin运行时,那么与cygwin1.dll相关联的其他程序可能会崩溃(除非你知道你正在寻找不同的DLL版本,否则找出发生的事情并非易事。 。)
你应该做的是将cygwin1.dll(以及你的程序可能需要的其他Cygwin DLL)复制到保存二进制文件的目录中,然后创建一个空的(零字节长度)文件,其名称与可执行文件相同,但是{{{附加1}},即,如果您的可执行文件是.local
,则创建名为mytest.exe
的文件。这将告诉PE加载器首先在保存二进制文件的同一目录中查找所需的DLL,从而避免以后出现很多麻烦。
答案 2 :(得分:0)
我遇到了同样的问题...... Adam Rosenfield的回答很好解决了。在我的电脑上,路径必须是"C:\cygwin64\bin"
我第一次没有认识到我的cygwin版本是64位...但它很清楚,路径变量中的这些微小差异决定了它是否有效。
答案 3 :(得分:0)
添加: ;C\cygwin64\bin
到Windows 系统 PATH
变量的 end 。
此外,要编译以在 CMD 或 PowerShell 中使用,您可能需要使用:
x86_64-w64-mingw32-g++.exe -static -std=c++11 prog_name.cc -o prog_name.exe
(这将调用交叉编译器(如果已安装)。)