【问题标题】:NDK:OpenSSL error" java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "libssl.so.1.0.0" needed by "libmyLib.so"NDK:OpenSSL 错误”java.lang.UnsatisfiedLinkError:dlopen 失败:无法加载“libmyLib.so”所需的库“libssl.so.1.0.0”
【发布时间】:2015-04-16 14:21:36
【问题描述】:

我正在尝试构建带有 openSSL 支持的 libcurl。我尝试使用 DockerFile 并使用 ubantuimage 。我能够为 libcurl 和 openSSL 编译 .so 文件。当我尝试在我的 android NDK 项目中使用这些并将应用程序加载到设备中时,它给了我错误“java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "libssl.so.1.0.0" required by "libmyLib.so" "; 由找不到库 "libssl.so.1.0.0" 引起的"。我已将此版本化文件放在我的 libcurl.so、libcrypto.so 和 libssl.so 所在的位置。这种错误出现在每个 .so 我根据我包含在我的 Android.mk 文件中的顺序使用。让我知道如何解决这个问题。对于上面提到的每个 .so,我都可以看到版本化文件。让我知道是否需要更多详细信息。我收到错误:

java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "libssl.so.1.0.0" needed by "libmyLib.so"; caused by library "libssl.so.1.0.0" not found

【问题讨论】:

    标签: android-ndk openssl


    【解决方案1】:

    Android 不支持版本化的 .so 文件,您必须将其重命名,使其以 .so 结尾。

    澄清:您应该重建库以更改其名称并能够使用它 - 不要只是重命名文件本身。

    【讨论】:

    • 我没有 libssl.so.1.0.0 文件并且遇到同样的错误。如何解决?
    • 重命名版本化的 .so 文件并不能解决问题。库名称最终出现在生成的二进制文件中。您必须将其重建为未版本控制的二进制文件。对于 openssl,请参阅此答案中的 make 命令:stackoverflow.com/a/33869277
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 2022-10-13
    • 2020-09-06
    • 2017-04-11
    • 2019-07-31
    相关资源
    最近更新 更多