文件系统和语言环境

时间:2013-04-05 20:40:55

标签: c++ android-ndk locale

我正在尝试使用NDK(用于Android)构建使用boost文件系统的代码。

除文件系统外,一切都还可以:

libs/filesystem/src/path.cpp:911: error: undefined reference to 'std::locale::locale(char const*)'
libs/filesystem/src/path.cpp:911: error: undefined reference to 'std::locale::locale(char const*)'
libs/filesystem/src/path.cpp:911: error: undefined reference to 'std::locale::locale(char const*)'
libs/filesystem/src/path.cpp:911: error: undefined reference to 'std::locale::locale(char const*)'

911代码行:

static std::locale posix_lazy_initialization(path::imbue(std::locale("")));

任何想法如何解决这个问题?


当我将STL版本从gnustl_static更改为gnustl_shared时,问题就消失了。它可能是什么?

1 个答案:

答案 0 :(得分:3)

在第906/907行,他们有MACRO

#if defined(BOOST_POSIX_API) && \
    !(defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__))

我更改为包含ANDROID

的例外
#if defined(BOOST_POSIX_API) && \
    !(defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) || defined(ANDROID))

到目前为止一切顺利,尽管我的代码不依赖于语言环境......

我已经将此问题交叉发布到Android开发者Google小组,因此他们可能会对动态链接的工作原理而不是静态链接有明确的答案。我会发布任何新闻......