2014-02-23 106 views
1

我正在使用Qt創建器和yaml-cpp庫。我把我的源代碼目錄下的YAML-CPP並將其添加到Qt的項目包括像這樣的路徑:包含庫時未找到Qt shared_ptr

INCLUDEPATH += Crypto \ 
    Yaml 

QMAKE_CXXFLAGS += -std=gnu++0x 
DEFINES += __GXX_EXPERIMENTAL_CXX0X__ 

正如你所看到的,我也告訴它使用C++ 11,因爲這是該庫的要求。不過,我得到的編譯我的項目這個錯誤(這是唯一的錯誤):

../ProjectName/Yaml/yaml-cpp/node/ptr.h:11:10: fatal error: 'boost/shared_ptr.hpp' file not found 
#include <boost/shared_ptr.hpp> 
     ^

我也試過,在一些網上資源的建議,與#include <memory>來取代它,但是這是行不通的。當我嘗試這個時,它仍然找不到shared_ptr

我可能會編譯庫並將Qt創建者鏈接到它,但是我必須在每個使用的平臺上以及每個項目開發人員使用的每臺機器上執行此操作。這似乎是一個更優雅的解決方案,將源代碼放入我的GitHub目錄中,並將其與該項目一起編譯,以最大限度地減少在其機器上編譯項目的人員的開銷,特別是因爲這是一個開源項目。

這裏是YAML-CPP的文件有問題的源代碼:

#include "yaml-cpp/dll.h" 
#include <boost/shared_ptr.hpp> 

namespace YAML 
{ 
namespace detail { 
    class node; 
    class node_ref; 
    class node_data; 
    class memory; 
    class memory_holder; 

    typedef boost::shared_ptr<node> shared_node; 
    typedef boost::shared_ptr<node_ref> shared_node_ref; 
    typedef boost::shared_ptr<node_data> shared_node_data; 
    typedef boost::shared_ptr<memory_holder> shared_memory_holder; 
    typedef boost::shared_ptr<memory> shared_memory; 
} 
} 
+1

你安裝了boost嗎? –

+0

如果你用'memory'替換'boost/shared_ptr.hpp',你需要用'std :: shared_ptr'來代替'boost :: shared_ptr' ... –

+0

我試過放入std命名空間,但是沒有工作。我如何安裝boost? –

回答

1

看來你沒有安裝增壓做。你需要先修改它。

但是,當他們的軟件使用C++ 11或更高版本構建時,您可能會促使yaml-cop開發人員越來越多地使用最新的C++標準。 C++ 11不再是新事物了。應該儘可能地利用它。

+1

你似乎錯過了某處的否定。 –