2012-02-29 91 views
0

誰能告訴我,爲什麼這個工程(編譯和運行)Boost庫簡單的編譯與元組

#include <iostream> 
#include <boost/numeric/ublas/matrix.hpp> 
//#include <boost/tuple.hpp> 
//#include <boost/tuple_comparison.hpp> 
//#include <boost/tuple_io.hpp> 
using namespace boost; 

int main () 
{ 
// tuple<int, char, float> t(2, 'a', 0.9); 
// std::cout << t << std::endl; 
    boost::numeric::ublas::matrix<double> m1; 
    return 0; 
} 

,但是當我取消相關的元組的線條,它說

boost_tuple.cpp:3:27: fatal error: boost/tuple.hpp: No such file or directory compilation terminated.

我用的是以下兩種情況下編譯:

g++ -Wall -c -I/usr/include/boost boost_tuple.cpp

而且我還檢查了/usr/include/boost/tuple.hpp存在

+0

語法突出顯示有些自動;有關詳細信息,請參閱http://meta.stackexchange.com/questions/72082/changes-to-syntax-highlighting – 2012-02-29 21:06:02

回答

4

如果你想將它作爲:

#include <boost/tuple.hpp> 

失去boost部分-I/usr/include/boost。現在這被評估爲/usr/include/boost/boost/tuple.hpp,這可能是你的問題。

編輯:

確保tuple.hpp安裝在那裏你說的是,因爲我的系統上它位於另一個文件夾:/usr/include/boost/tuple/tuple.hpp

這意味着我需要包括文件#include <boost/tuple/tuple.hpp>並將其編譯爲:

g++ tuple.cpp -o tuple -I /usr/include/boost  

tuple.cpp

#include <iostream> 
#include <boost/numeric/ublas/matrix.hpp> 
#include <boost/tuple/tuple.hpp> 

using namespace boost; 

int main () 
{ 
    tuple<int, char, float> t(2, 'a', 0.9); 
    boost::numeric::ublas::matrix<double> m1; 

    return 0; 
} 
+0

嗯..這似乎不是問題。我能夠使用註釋運行代碼(使用-I/usr/include和-I/usr/include/boost)..但是在取消註釋關於元組的部分後,它們都不起作用。 – 2012-02-29 21:09:22

+0

是的,完全一樣的錯誤。順便說一句,感謝您的幫助! – 2012-02-29 21:17:37

+0

是的。它很奇怪! – 2012-02-29 21:23:06