Я собрал casablanca для Android в соответствии с инструкциями здесь: Как собрать и настроить для Android в Linux (2.3+).
Я переместил скомпилированные библиотеки в свой проект Android и связал модуль, который зависит от casablanca, в соответствии с инструкциями здесь: Как использовать C++ REST SDK на 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, а мой проект Android находится на машине с Windows-64. Однако при попытке создать общую библиотеку casablanca для Android в Linux я также получил несколько ошибок компоновщика.
Я подозреваю, что какой-то код компилируется с помощью libstdc++, а какой-то с libc++. Глядя на сценарии сборки, я вижу, что clang используется как для boost, так и для casablanca, но я также вижу пути включения, указывающие на заголовки gcc. Мне также любопытно, почему я вижу в выводе компоновщика (в Windows) ссылки на /sources/cxx-stl/gnu-libstdc++/4.8/include/ с моим путем виртуальной машины Linux.
Мы будем признательны за любые идеи о том, как правильно связать casablanca на Android.
Спасибо.
(Я разместил этот же вопрос здесь.)