Включить библиотеку Crypto ++ в проект Android через NDK - PullRequest
3 голосов
/ 03 апреля 2012

Я пытаюсь включить Crypto ++ (http://www.cryptopp.com/) в проект Android NDK. Я хочу иметь возможность вызывать функции-члены Crypto ++ из части C ++ моего кода. Я подумал, что я мог бы просто включить заголовки и исходники из Crypto ++ вмой код C ++, но я не могу заставить его работать.

Мой файл C ++ выглядит так:

#include <jni.h>
#include "cryptopp/modes.h"
#include "cryptopp/aes.h"
using namespace CryptoPP;
...

со всеми заголовками и исходными файлами Crypto ++ в подкаталоге cryptopp.

Изначально я получил много ошибок компиляции, поскольку стандартные библиотеки C ++ не были найдены, но я исправил это, добавив Application.mk со следующей строкой:

APP_STL := stlport_static

Компиляция с ndk-В сборке (как в стандартной, так и в версии crystax) выдается следующая ошибка:

ABI='armeabi'
ABI='armeabi-v7a'
ABI='x86'
Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Compile++ thumb  : ndk-tests-cpp <= ndk-tests.cpp
In file included from jni/cryptopp/modes.h:7,
             from jni/ndk-tests.cpp:2:
jni/cryptopp/cryptlib.h: In static member function 'static void CryptoPP::NameValuePairs::ThrowIfTypeMismatch(const char*, const std::type_info&, const std::type_info&)':
jni/cryptopp/cryptlib.h:291: error: exception handling disabled, use -fexceptions to enable
make: *** [obj/local/armeabi/objs-debug/ndk-tests-cpp/ndk-tests.o] Error 1

Раньше я никогда не включал внешнюю библиотеку в проект NDK - возможно, я просто пропускаю что-то базовое.

1 Ответ

6 голосов
/ 28 апреля 2012

Вы должны включить исключения для вашего проекта Android. Попробуйте включить эти строки в ваши Applications.mk:

APP_CPPFLAGS += -frtti 
APP_CPPFLAGS += -fexceptions
...