我按照此处的说明为 Android 构建了 casablanca:How to build and setup for Android on Linux (2.3+)。
我将已编译的库移动到我的 Android 项目中,并按照此处的说明链接了依赖于 casablanca 的模块:如何在 Android (2.3+) 上使用 C++ REST SDK。
但是,我收到多个链接器错误。
例如,当尝试使用
json::value::string( "some value" );
我明白了,
error: undefined reference to 'web::json::value::string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)'
当尝试使用
json::value version;
version[someValue] = something;
我明白了,
error: undefined reference to 'web::json::value::operator[](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
我正在用 clang 编译我的 Android 项目。
我在 Linux-64 VM 上构建,我的 Android 项目在 Windows-64 机器上。但是,当尝试在 Linux 上为 Android 构建 casablanca 共享库时,我也遇到了多个链接器错误。
我怀疑有些代码是用 libstdc++ 编译的,有些是用 libc++ 编译的。通过查看构建脚本,我可以看到 clang 被用于 boost 和 casablanca,但我也看到包含指向 gcc 标头的路径。我也很好奇为什么我在链接器输出(在 Windows 上)上看到 /sources/cxx-stl/gnu-libstdc++/4.8/include/ 与我的 Linux VM 路径的引用。
任何有关如何让 casablanca 在 Android 上正确链接的见解将不胜感激。
谢谢。
(我在这里发布了同样的问题。)