gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:06 25 4
gpt4 key购买 nike

我正在尝试在 Android NDK 项目中包含 Crypto++ (http://www.cryptopp.com/)。我希望能够从代码的 C++ 部分调用 Crypto++ 成员函数。我以为我可以在我的 C++ 代码中包含来自 Crypto++ 的 header 和源代码,但我似乎无法让它工作。

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

最佳答案

您必须为您的 Android 项目启用异常(exception)。尝试将这些行包含到您的 Applications.mk 中:

APP_CPPFLAGS += -frtti 
APP_CPPFLAGS += -fexceptions

关于android - 通过 NDK 在 Android 项目中包含 Crypto++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com