2

我正在尝试构建使用带有 NDK (for 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_staticgnustl_shared问题就消失了。会是什么呢?

4

1 回答 1

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 Developers Google Group,所以也许他们会对为什么动态链接有效而不是静态链接有明确的答案。我会发布任何我得到的消息...

于 2013-04-11T23:38:15.343 回答