2014-02-13 54 views
2

我試圖按照my previous question的回答並使用boost::locale::conv::between從包含UTF-16數據的vector<char>獲取UTF-8字符串。我的代碼是非常之多,在回答(在一定的差異我如何獲得char *對boost :: locale的未定義引用:conv ::

char in[length + 1]; 
//... populate in with my source data 
in[length] = '\0'; 
std::string out = boost::locale::conv::between((const char*)in, std::string("UTF-8"), std::string("UTF-16")); 

編譯沒有問題,但連接過程中出現了錯誤

In function `boost::locale::conv::between(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::locale::conv::method_type)': 
/usr/local/include/boost/locale/encoding.hpp:186: undefined reference to `boost::locale::conv::between(char const*, char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::locale::conv::method_type)' 

這看起來不正確對我來說可能性我可以想到的是我已經安裝了1.50,所以我安裝了最新的1.55版本 - 但我得到了同樣的錯誤

+0

Boost語言環境不是僅包含標題的庫,它具有需要鏈接的實際庫。 –

+0

@JoachimPileborg D'oh!這將解釋它;忘了在boost_locale中加入'-l'。發表您的評價作爲答案 - 我會接受它。 –

回答

5

Boost語言環境不是隻有頭文件的庫,它有一個實際的庫您需要鏈接。 廣告丁以下標誌LDFLAGS幫助:

-lboost_locale 
1

我也遇到了同樣的問題。我認爲你應該使用動態庫而不是靜態庫。

相關問題