3

Android NDK プロジェクトに Crypto++ (http://www.cryptopp.com/) を含めようとしています。コードの C++ 部分から Crypto++ メンバー関数を呼び出せるようにしたいと考えています。C++コードにCrypto++のヘッダーとソースを含めることができると思っていましたが、うまくいかないようです。

私のC++ファイルは次のようになります。

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

cryptopp サブディレクトリ内のすべての Crypto++ ヘッダーとソース ファイルを使用します。

標準の C++ ライブラリが見つからないため、最初は多くのコンパイル エラーが発生しましたが、次の行で Application.mk を追加して修正しました。

APP_STL := stlport_static

ndk-build (標準バージョンと 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 プロジェクトに外部ライブラリを含めたことはありません。基本的なことを見落としているだけかもしれません。

4

1 に答える 1

6

You have to enable exceptions for your Android project. Try to include these lines into your Applications.mk:

APP_CPPFLAGS += -frtti 
APP_CPPFLAGS += -fexceptions
于 2012-04-28T19:37:24.890 に答える