对boost :: locale的未定义引用:conv :: between

Ale*_*s G 2 c++ boost locale

我试图按照我之前的问题的答案,并使用boost::locale::conv::betweenvector<char>包含UTF-16数据的UTF-8字符串.我的代码与答案非常相似(在获得以下方面存在一些差异char *:

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"));
Run Code Online (Sandbox Code Playgroud)

这编译很好,但在链接期间我得到错误

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)'
Run Code Online (Sandbox Code Playgroud)

这对我来说不合适.我可以想到的可能性是我安装了1.50升级,所以我安装了最新的1.55版本 - 但我得到了同样的错误.

Som*_*ude 7

Boost语言环境不是仅限标题的库,它具有您需要链接的实际库.将以下标志添加到LDFLAGS有助于:

-lboost_locale
Run Code Online (Sandbox Code Playgroud)