Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MinGW g++;不';在自己的include目录中找不到头 我最近通过最新版本安装了MIW,包括Boost C++库。具体地说,我是在寻找boost库提供的作用域_ptr。但是,当我试图在头中包含作用域的ptr(#include)时,编译器抛出 错误:boost/scoped_ptr.hpp:没有这样的文件或目录_C++_Windows_Boost_C++11_Mingw - Fatal编程技术网

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的某些名称损坏规则是不同的。