小编yao*_*yao的帖子

警告:libcryptopp.so:缺少DT_SONAME将使用basename作为替换

我正在尝试构建libcryptopp.so并将其包含在我的JNI代码中,遵循Android Crypto ++中的指南,我遇到了以下问题.

Crypto ++ 5.6.3中缺少符号问题

最初我使用Crypto ++ 5.6.3,我遇到了这个问题:

 java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_Z9GlobalRNGv" 

referenced by "/data/app/com.example.administrator.jnitest-2/lib/arm/libcryptopp.so"...
Run Code Online (Sandbox Code Playgroud)

我查了一下libcryptopp.so:

$ readelf -Ws libcryptopp.so | grep _Z9GlobalRNGv
1406: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z9GlobalRNGv
15836: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z9GlobalRNGv
Run Code Online (Sandbox Code Playgroud)

切换到Crypto ++ 5.6.4修复此问题,但我仍然不知道原因并遇到另一个问题:

缺少DT_SONAME

12-21 09:50:20.837 21677-21677/com.example.administrator.jnitest   
W/linker: /data/app/com.example.administrator.jnitest- 1/lib/arm/libcryptopp.so: is missing DT_SONAME will use basename as a 
replacement: "libcryptopp.so"
Run Code Online (Sandbox Code Playgroud)

实际上这只是一个警告,应用程序不会崩溃.

我使用的是最新版本的android Mashwallow MOB31K.有人在使用其他库时也遇到了类似的问题

https://github.com/bytedeco/javacpp-presets/issues/188
Run Code Online (Sandbox Code Playgroud)

在Android N预览上.

为什么我会收到警告,如何解决?

android crypto++ android-ndk

5
推荐指数
1
解决办法
1881
查看次数

标签 统计

android ×1

android-ndk ×1

crypto++ ×1