ここの手順に従って Android 用のカサブランカをビルドしました: How to build and setup for Android on Linux (2.3+)。
コンパイルしたライブラリを Android プロジェクトに移動し、次の手順に従って casablanca に依存するモジュールをリンクしました: How to use the C++ REST SDK on Android (2.3+)。
ただし、複数のリンカ エラーが発生します。
たとえば、使用しようとすると
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&)'
Android プロジェクトを clang でコンパイルしています。
私は Linux-64 VM で構築し、私の Android プロジェクトは Windows-64 マシン上にあります。ただし、Linux で Android 用の casablanca の共有ライブラリをビルドしようとすると、複数のリンカー エラーも発生しました。
libstdc++ でコンパイルされたコードと libc++ でコンパイルされたコードがあると思われます。ビルド スクリプトを見ると、clang がブーストとカサブランカの両方に使用されていることがわかりますが、gcc ヘッダーを指すインクルード パスも確認できます。Linux VM パスで /sources/cxx-stl/gnu-libstdc++/4.8/include/ への参照がリンカー出力 (Windows の場合) に表示される理由についても興味があります。
Android でカサブランカを適切にリンクする方法についての洞察をいただければ幸いです。
ありがとう。
(私はこの同じ質問をここに投稿しました。)