2014-03-07 40 views
6

因此,我最近通過包含boost C++庫的最新版本nuwen's MinGW distribution安裝了MinGW。具體來說,我在boost庫提供的scoped_ptr之後。然而,當我嘗試包括使用scoped_ptr(#include <boost/scoped_ptr.hpp>)在我的頭,編譯器會引發
error: boost/scoped_ptr.hpp: No such file or directoryMinGW g ++在其自己的包含目錄中找不到頭文件

的Makefile:

compile: 
    g++ -o gen/cavestory src/**.cc 
run: 
    gen/cavestory 

另外,我加入SDL的背面版本的MinGW的包括SDL目錄下/ **。所有的頭文件都在那裏,我檢查過了,編譯器會在我的include SDL/SDL.h>上拋出類似的錯誤。

事情我已經嘗試:
<>每一個變化和""在我的包含語句
卸下.h.hpp
設置編譯器標誌專門搜索包含的頭文件的目錄與g++ -I

這代碼正在編譯MinGW的早期版本,MinGw distrobution的作者明確指出,他將g ++編譯器選項更改爲默認爲C++ 11,所以我認爲這很可能與此有關。雖然我的google-fu沒有達到結果。

+2

你的陰影可能會變得陰影。 – Rapptz

+1

在make文件中嘗試「哪個g ++」來確定哪個被調用。順便說一句,你不應該在你的Makefiles中編寫「g ++」。這是不好的形式。請參閱:https://sites.google.com/site/michaelsafyan/software-engineering/how-to-write-a-makefile –

+0

當前的安裝位置是否與以前的安裝位置相同?您可能仍然在查看舊文件夾中的文件。一個快速,無痛的檢查將複製從當前安裝的boost文件夾到以前安裝的include文件夾(假設當然,我的第一個問題的答案是否定的) – enhzflep

回答

6

解決方案我想出了:基於Michael Burr的上述評論,我用冗長的標誌運行編譯器。由於某些原因,搜索的包含目錄不在MinGw根目錄中,而是埋在lib目錄中。我期望這是用一個安裝腳本修復的,但是我沒有正確運行它,或者它在我的系統上無法運行。在這裏我需要添加相關文件的目錄是,我的機器上,

C:\MinGW\lib\gcc\x86_64-w64-mingw32\4.8.2\include

這是一個快速和骯髒的修復。我相信還有更好的辦法,但這讓我最快,最快。

+0

Ah-ha - 我一直在運行'set_distro_paths.bat'腳本來設置MinGW可執行文件的路徑。我並不知道它還向「C_INCLUDE_PATH」和「CPLUS_INCLUDE_PATH」環境變量添加(或設置)了幾個目錄,例如'c:\ mingw \ include'。這就是獲得提升和朋友。我以爲'set_distro_paths.bat'只設置路徑。 –

+0

另外,使用'-I'選項沒有讓你的工作很有趣/奇怪。也許你指定了'-I c:\ mingw \ include \ boost'而不是'-I c:\ mingw \ include'? –

+0

我嘗試了兩個。我現在正在抨擊我的頭,因爲鏈接器無法找到SDL.lib和SDLMain.lib。我收到對每個SDL_ *調用的未定義引用 – tjtoml

相關問題