为什么 CodeBlocks (13.12) 找不到 C:\MinGW\include?

Why can't CodeBlocks (13.12) find C:MinGWinclude?

本文关键字:MinGW include 找不到 CodeBlocks 为什么      更新时间:2023-10-16

我正试图使用代码块构建我的c++项目,但我收到了以下错误:

ld.exe找不到C:\MinGW\include权限拒绝

我最初手动安装mingw是为了运行eclipse的c++版本,后来我决定改用代码块。由于它没有运行,我删除了mingw的第一个版本(因为代码块已经安装了它,我认为它有冲突),然后卸载并重新安装了代码块(我也重新启动了电脑,只是为了确定)。它仍然给了我一个错误,所以我在网上搜索了这个错误,发现代码块编译器不喜欢路径中的空格和括号(带有自己的mingw文件夹的代码块安装在c:\programmi(x86)中,所以你可以看到它不工作的原因),建议将mingw移到c:\,并将代码块中的编译器路径选项设置为新路径(建议在stackoverflow上找到)。现在它给了我我在上面写的错误。附言:
我尝试在管理模式下打开代码块,但仍然出现错误。以下是生成日志窗口向我显示的内容:mingw32-g++.exe-o bin\Debug\TMIDIcustom.exe obj\Debug\tmidi.o obj\Degug\TMspeech.o obj\Debug\tmidi.res C:\MinGW\include C:\minw/bin//lib/gcc/mingw32/4.7.1/../../../../mingw32/bin/ld.exe:找不到C:\MinGW\include:权限被拒绝collect2.exe:错误:ld返回1个退出状态进程终止,状态为1(0分钟,1秒)1个错误,0个警告(0分钟,1秒)。有人能告诉我发生了什么事吗?

为什么C:\MinGW\include会出现在您的命令中,就好像它是一个要链接的独立文件一样?它实际上是一个目录,所以很自然,试图将其作为文件读取会导致错误。。。对于这种无效的访问尝试,"拒绝许可"似乎是完全合理的可能性。

为什么ld.exe(链接器)还要在C:\MinGW\include中查找?可能是因为,按照g++命令中指定的方式,编译器将其标识为要链接的预编译对象文件(事实并非如此)。它是提供标准系统头文件(可能还有一些额外的用户安装的头文件)的目录,供编译器本身使用;它不应该包含链接器感兴趣的内容。也许您打算将其指定为"-I C:\MinGW\include";然而,这是完全多余的,因为g++(和gcc),如果安装正确,无论如何都知道要在那里搜索。