- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 native 库(“处理器”),我正在使用依赖于 libjpeg 的 Android NDK 构建它。但是,此问题可能与 Android 方面无关。我已经成功构建了库,但是当我尝试运行库时无法正确加载并出现此错误:
failed: dlopen failed: cannot locate symbol "jpeg_mem_src"
但是,如果我 nm -D processor.so
它确实包含以下符号:
...
U jpeg_CreateCompress
U jpeg_CreateDecompress
U jpeg_destroy_compress
U jpeg_destroy_decompress
U jpeg_finish_compress
U jpeg_finish_decompress
U jpeg_mem_dest
U jpeg_mem_src
U jpeg_read_header
U jpeg_read_scanlines
...
处理器build.gradle:
sources {
main {
jni {
dependencies {
project ":jpeg"
}
}
}
}
ndk {
moduleName "processor"
cppFlags.add("-fexceptions")
ldLibs.add("log")
stl "gnustl_shared"
}
Java 端加载它:
static
{
try
{
Log.i("JNI", "Trying to load lib");
System.loadLibrary("gnustl_shared");
System.loadLibrary("processor");
}
catch (UnsatisfiedLinkError ule)
{
Log.e("JNI", ule.toString());
}
}
知道为什么这些符号存在但找不到吗?谢谢!
最佳答案
根据 Android 版本,您必须手动加载 jpeg 库(并将其也包含在您的 apk 中!)
因此,只需将 System.loadLibrary("jpeg");
添加到您的静态 block 中,它就可以解决问题。
顺便说一句,您可以在 .so
文件中看到符号这一事实仅意味着您的文件正在使用它们,而不是您的 .so
提供了实现。您可以将其视为 nm
报告带有 U
字母的符号,表示 undefined
。
关于android - 找不到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36139399/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!