gpt4 book ai didi

android - 在 Android NDK 中链接版本共享库

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:48:04 30 4
gpt4 key购买 nike

我正在尝试通过 loadLibrary 调用在我的 Android 应用程序中加载两个共享库:

System.loadLibrary("mywrapper");
System.loadLibrary("crypto");

我一直在运行以捕获 `UnsatisfiedLinkError。这是错误的更详细版本。

Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1969]:
130 could not load needed library 'libcrypto.so.1.0.0' for
'libmywrapper.so' (load_library[1111]: Library 'libcrypto.so.1.0.0' not found)

有什么想法吗?

花了一些时间后,我发现 Android 不支持版本库。有人遇到过同样的问题吗?

最佳答案

我在为 Android 构建 libwebsockets 时遇到了同样的问题,它需要与 OpenSSL 链接。我以 libssl.so 为例。您应该对相关的 .so 文件执行相同的操作。

Before:
huiying@huiying-PORTEGE-R835:~$ objdump -p libssl.so | grep so
libssl.so: file format elf32-little
NEEDED libcrypto.so.1.0.0
NEEDED libdl.so
NEEDED libc.so
SONAME libssl.so.1.0.0

After
huiying@huiying-PORTEGE-R835:~$ rpl -R -e .so.1.0.0 "_1_0_0.so" libssl.so
Replacing ".so.1.0.0" with "_1_0_0.so" (case sensitive) (partial words matched)
.
A Total of 2 matches replaced in 1 file searched.
huiying@huiying-PORTEGE-R835:~$ objdump -p libssl.so | grep so
libssl.so: file format elf32-little
NEEDED libcrypto_1_0_0.so
NEEDED libdl.so
NEEDED libc.so
SONAME libssl_1_0_0.so

And don't forget to change file name "libssl.so" to "libssl_1_0_0.so".

破解有效。我已经运行 Android 应用程序来证明这一点。在http://computervisionandjava.blogspot.com/2015/05/trouble-with-versioned-shared-libraries.html看我的咆哮.

关于android - 在 Android NDK 中链接版本共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11491065/

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