MinGW g++;不';在自己的include目录中找不到头 我最近通过最新版本安装了MIW,包括Boost C++库。具体地说,我是在寻找boost库提供的作用域_ptr。但是,当我试图在头中包含作用域的ptr(#include)时,编译器抛出 错误:boost/scoped_ptr.hpp:没有这样的文件或目录
生成文件:MinGW g++;不';在自己的include目录中找不到头 我最近通过最新版本安装了MIW,包括Boost C++库。具体地说,我是在寻找boost库提供的作用域_ptr。但是,当我试图在头中包含作用域的ptr(#include)时,编译器抛出 错误:boost/scoped_ptr.hpp:没有这样的文件或目录,c++,windows,boost,c++11,mingw,C++,Windows,Boost,C++11,Mingw,生成文件: compile: g++ -o gen/cavestory src/**.cc run: gen/cavestory 此外,我还在SDL/**下的MinGW的include目录中添加了SDL的备份版本。所有的头文件都在那里,我已经检查过了,编译器在我的include SDL/SDL.h>上抛出了一个类似的错误 我尝试过的事情: 我的include语句中和“的每个变体 移除.h和.hpp 设置编译器标志以使用g++-I 这段代码是用MinGW的早期版本编译的,Min
compile:
g++ -o gen/cavestory src/**.cc
run:
gen/cavestory
此外,我还在SDL/**下的MinGW的include目录中添加了SDL的备份版本。所有的头文件都在那里,我已经检查过了,编译器在我的include SDL/SDL.h>上抛出了一个类似的错误
我尝试过的事情:
我的include语句中
和“
的每个变体
移除.h
和.hpp
设置编译器标志以使用g++-I
这段代码是用MinGW的早期版本编译的,MinGW发行版的作者特别声明,他将g++编译器选项更改为默认为C++11,因此我认为很可能与此有关。不过,我的谷歌搜索引擎还没有发布搜索结果 我提出的解决方案是:根据Michael Burr上面的评论,我使用verbose标志运行编译器。由于某些原因,搜索的include目录不在MinGw根目录中,而是隐藏在lib
目录中。我希望这是打算用其中一个安装脚本修复的,但我要么没有正确运行它,要么它在我的系统上不工作。我需要添加相关文件的目录是,在我的机器上
C:\MinGW\lib\gcc\x86\u 64-w64-mingw32\4.8.2\include
这是一个快速而肮脏的解决办法。我相信有更好的方法,但这让我跑得最快 您的mingw可能被跟踪。请在make文件中尝试“哪个g++”,以确定哪个g++被调用。顺便说一下,您不应该在makefile中硬编码“g++”。这是糟糕的形式。请参阅:当前安装位置是否与前一个有效安装位置相同?您可能仍在旧文件夹中查找文件。一个快速、轻松的检查是将boost文件夹从当前安装复制到上一次安装的include文件夹中(当然,假设我的第一个问题的答案是否定的)@MichaelAaronSafyan语法?创建一个空的empty.c
文件,然后发出命令:gcc-v empty.c
。将输出粘贴到问题中。spew中包含编译器将在其中搜索包含文件的目录。假设您已将nuwen发行版安装到c:\mingw
,作用域\u ptr.hpp
应该位于`c:\mingw\include\boost`Ah ha-我一直在运行设置发行版路径.bat
脚本来设置mingw可执行文件的路径。我不知道它还添加(或设置)两个目录,例如c:\mingw\include
到c\u include\u路径
和CPLUS\u include\u路径
环境变量。这就是为什么会得到鼓舞和朋友。我认为设置发行版路径。bat
只设置路径。另外,使用-I
选项并没有让事情对你起作用,这很有趣/奇怪。也许您指定了-ic:\mingw\include\boost
,而不是只指定了-ic:\mingw\include
?我两个都试过了。我现在正对无法定位SDL.lib和SDLMain.lib的链接器进行猛烈抨击。我得到了每个SDL_*调用的未定义引用,您可能想在问题中发布-v
输出。另外,请记住,自11.0版以来,nuwen的MinGW是x64本机的(它默认构建x64目标-我认为它甚至不支持构建32位目标的-m32
选项),因此请确保添加到构建中的任何库也是x64。如果您安装了32位SDL LIB,这可能是未定义引用的原因,因为x86和x64的某些名称损坏规则是不同的。