Android   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了通过NDK在Android项目中包含加密库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我想在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

大佬总结

以上是大佬教程为你收集整理的通过NDK在Android项目中包含加密库全部内容,希望文章能够帮你解决通过NDK在Android项目中包含加密库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: