繁体   English   中英

通过NDK在Android项目中包含Crypto ++库

[英]Include Crypto++ Library in Android Project via NDK

我想在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(标准版和结构版)进行编译会给出以下错误:

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项目中包含外部库 - 也许我只是忽略了一些基本的东西。

您必须为Android项目启用例外。 尝试将这些行包含到您的Applications.mk中:

APP_CPPFLAGS += -frtti 
APP_CPPFLAGS += -fexceptions

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM