UnsatisfiedLinkError:无法从加载程序加载 X

2023-12-19

我正在尝试使用本机代码创建一个 android 项目来调用 OpenGL 函数。

我正在按照本指南来启动该项目:http://www.learnopengles.com/calling-opengl-from-android-using-the-ndk/ http://www.learnopengles.com/calling-opengl-from-android-using-the-ndk/

根据本指南,我必须“右键单击 Package Explorer 中的项目,从下拉菜单中选择 Android Tools,然后选择 Add Native Support...”。但是,此选项在我的 eclipse 版本(来自与 sdk 捆绑的 android 站点的最新 osx 版本)中不可见。

为了解决这个问题,我使用以下命令手动将项目转换为 C/C++ 项目: 文件 -> 新建 -> 其他 -> 转换为 C/C++ 项目(添加 C/C++ 支持)。

然后,我将 PATH 变量添加到项目属性 -> C/C++ 构建 -> 环境下找到的环境变量中。我将 ndk 的路径添加到这个变量中。

此外,我制作了必要的 make 文件并生成了 jni 文件。 该项目确实编译并在 libs 目录中生成一个 .so 文件。 但是,当我尝试在设备上运行该项目时,出现以下运行时错误:

异常 java/lang/UnsatisfiedLinkError;初始化 nl/blaat/project_name/JNIWrapper 时抛出; java.lang.UnsatisfiedLinkError:无法从加载器 dalvik.system.PathClassLoader[dexPath=/data/app/nl.blaat.project_name 加载 GLCore。

当我在线搜索时,问题的通常答案是本机代码未编译,但就我而言,它可以编译。 NDK 提供的示例项目也存在同样的问题。

编辑:一些可能有助于识别问题的额外信息。

  • 该问题在 osx 和 windows 上都会出现。
  • 该问题出现在我的三星 Galaxy s2 和 s5 上,因此它可能不是特定于设备的。
  • SDK附带的示例也出现该问题。

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := OpenGLCore
LOCAL_CFLAGS    := -Wall -Wextra
LOCAL_SRC_FILES := OpenGLCore.c jni.c
LOCAL_LDLIBS := -lGLESv2

include $(BUILD_SHARED_LIBRARY)

应用程序.mk

APP_PLATFORM := android-10
APP_ABI := all

如果 NDK 中的示例项目给出相同的错误,您确定它是为正确的架构构建的吗?大多数 Android 设备都运行 ARM 处理器,但有些设备运行在 x86 和 mips 上,并且许多 NDK 示例默认情况下仅针对 ARM 构建。

要针对所有架构进行构建,请将“APP_ABI := all”添加到 jni/Application.mk。

另外,为了确保调整后的构建过程确实有效,请尝试首先在项目根目录中的终端中手动运行 ndk-build 来构建 .so,以获取 NDK 示例。 (此后您可能需要刷新 eclipse 中的文件夹结构,以确保找到并包含新构建的库。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UnsatisfiedLinkError:无法从加载程序加载 X 的相关文章

  • 如何在 Selenium 中定位具有特定文本的跨度? (使用Java)

    我在使用 java 查找 Selenium 中的 span 元素时遇到问题 HTML 看起来像 div class settings padding span Settings span div 我尝试了以下方法但没有成功 By xpath
  • 尝试将过滤器添加到 Grizzly+Jersey 应用程序时出现问题

    我有这个服务器初始化类 package magic app main import org glassfish grizzly http server HttpServer import org glassfish jersey grizz
  • int 到 long 赋值

    我一直在尝试这个 int 和 long 转换 我尝试分配一个int变量为along多变的 代码如下 public static void main String args int i 1024 long j i long k i i i i
  • 如何检查 firebase 中是否存在孩子? [复制]

    这个问题在这里已经有答案了 我有一个 firebase 它有一个名为 users 的节点 用户给出一个用户名 我想检查该用户名是否已作为用户节点的子节点存在 这是我目前正在尝试的代码 平台是安卓 String myUsername user
  • Android 是否可以同时使用前后摄像头[重复]

    这个问题在这里已经有答案了 我想同时使用设备的前置和后置摄像头 在我的应用程序中 屏幕的前半部分将显示后置摄像头的预览 屏幕的下半部分将显示前置摄像头的预览 我尝试过设置两个不同的相机预览 但是当我打开应用程序时 屏幕的前半部分 显示后置相
  • java中类的命名约定 - 全部大写

    在 Java 中 当类全部大写时 如何命名它 例如 如果我想创建一个班级来选择某些人成为 VIP 我应该将类命名为 VIPSelector 还是 VipSelector Thanks 你的两个选择都有效 类的主要目标是让它们以大写字母开头
  • 如何在 JUnit5 中为测试套件设置自定义测试执行顺序?

    我在 JUnit5 上进行了大量测试 并在多个线程中并行运行 还有有关每次测试时间的信息 我想在最长的测试开始时运行 并将最快的测试留在最后以优化公共执行时间 我还没有找到在 JUnit5 中执行此操作的方法 版本中5 4有一个org ju
  • .NET 配置(app.config/web.config/settings.settings)

    我有一个 NET 应用程序 它具有用于调试和发布版本的不同配置文件 例如 调试 app config 文件指向开发SQL服务器 http en wikipedia org wiki Microsoft SQL Server它启用了调试并且发
  • 引用计数指针的STL类?

    这应该是微不足道的 但我似乎找不到它 除非不存在这样的类 智能指针的 STL 类 或类集 是什么 UPDATE 感谢您的回复 我必须说我很惊讶没有标准实施 我最终使用了这个 http archive gamedev net referenc
  • 在 C 中初始化结构体的静态数组

    我正在用 C 实现一个纸牌游戏 纸牌有很多种类型 每种纸牌都有大量信息 包括一些需要单独编写与其关联的脚本的操作 给定这样的结构 并且我不确定我的语法是否适合函数指针 struct CARD int value int cost This
  • gcc总是做这种优化吗? (公共子表达式消除)

    作为示例 假设表达式sys gt pot atoms item gt P kind mass在循环内求值 循环只改变item 因此表达式可以简化为atoms item gt P kind mass通过将变量定义为atoms sys gt p
  • Android - 减少位图绘制的内存使用量

    我的应用程序中有一张地图 显示了 Gowalla 的位置 我使用带有简单默认标记的 ItemizedOverlay 但在绘制项目时 我将默认标记替换为从 Gowalla 下载 9 并缓存在磁盘上 的位置图标 问题是 如果屏幕上有很多位置 例
  • 在 SDK 中找不到文件夹“tools”

    我在做安卓开发使用 Eclipse 我已经下载了所有必需的软件 但遇到了与中讨论的相同的问题 无法在 Eclipse 中设置 Android Target https stackoverflow com questions 6384328
  • OutputStream 到 DB2 数据库表的 BLOB 列

    在 DB2 数据库中 我有下表 CREATE TABLE MyTestTable MYPATH VARCHAR 512 NOT NULL MYDATA BLOB CONSTRAINT MYTESTTABLE PK PRIMARY KEY M
  • 始终启动没有历史记录的新活动实例

    有没有办法将活动作为没有历史记录的新实例启动 在清单文件中尝试了以下内容 android launchmode singleinstance android noHistory true 我能够实现我所需要的 但是一旦屏幕锁定 就会显示之前
  • 从原始 URL 获取重定向 URL

    我的数据库中有一个表 其中包含一些网站的 URL 我必须打开这些 URL 并验证这些页面上的一些链接 问题是某些 URL 被重定向到其他 URL 对于这样的 URL 我的逻辑是失败的 有什么方法可以传递原始 URL 字符串并获取重定向的 U
  • Spring Data 中 IQueryable 的等效项

    我习惯了 Net 和 LINQtoEntities 尤其是 IQueryable 部分 它允许在获取结果之前通过不同的函数传送请求 Spring数据中是否存在类似的东西 或者任何其他 java ORM 我希望能够做的基本示例 private
  • 如何检查多个变量是否等于同一值?

    如何比较多个项目 例如 我希望检查所有变量 A B 和 C 是否都等于字符 X 或所有三个变量都等于 O 如果其中 2 个为 X 1 个为 O 则应返回 false I tried if A B C X A B C O Do whateve
  • Android:如何获取小数点后的两位数?不想截断值

    如何获取小数点后仅两位数的双精度值 例如 如果 a 190253 80846153846 那么结果值应该像 a 190253 80 尝试 我尝试过这个 public static DecimalFormat twoDForm new Dec
  • 需要在 Android 应用程序卸载期间执行一些活动

    我正在开发一个应用程序 如果用户卸载该应用程序 我需要登录该应用程序 所以我正在遵循这种方法应用程序如何检测到它将被卸载 https stackoverflow com questions 18692571 how it works war

随机推荐

  • 在分组依据查询中包含缺失的月份

    我想我这里有一个艰难的人 我试图按月获取订单数 即使为零 这是问题查询 SELECT datename month OrderDate as Month COUNT OrderNumber AS Orders FROM OrderTable
  • 方法引用与 lambda 表达式

    我想用下面示例中的方法引用替换 lambda 表达式 public class Example public static void main String args List
  • 使用 JavaScript 的逻辑运算符压缩 if/else if 语句

    我正在学习 AngularJS 试图制作一个简单的计算器 并且我正在尝试压缩它if else if 陈述使用 Javascript 逻辑运算符 鉴于这个例子 我怎样才能减少它呢 如果你不明白 scope 忽略它 它基本上是一个视图 因此 当
  • 在引导程序轮播中加载多个谷歌图表

    我创建了一个引导程序轮播来说明我们公司的数据 在这个轮播中 我有引导表 图片和两个谷歌图表 饼图和堆积条形图 如果我没有为谷歌图表保留活动类 它们将无法正确加载 有时图表大小会发生变化 有时图例不会显示 如果我使饼图处于活动状态 则它可以正
  • Clojure 中的自动 TCO

    有没有办法在 Clojure 中定义自动尾部调用优化的函数 e g defrecur fact x if x 1 1 x fact dec x 将在内部翻译为 defn fact x loop n x f 1 if n 1 f recur
  • HTML 服务提交表单不调用 google.script.run 函数

    我有一个脚本曾经工作得很好 但突然停止工作了 用户从用户创建的菜单中选择一个选项 该菜单将启动一个对话框 HTML 服务表单 来收集两个参数 这一切工作正常 当用户提交表单时 应执行此代码
  • Rails:相同两个模型之间的多个联接表

    我有两个模型 玩家和事件 它们之间有两个连接表 参与者和课程 class Event has many participants has many players through participants has many lessons
  • SSIS 包中 ReadUncommissed 隔离级别的解决方法

    SSIS 中的 ReadUncomfilled IsolationLevel 是 Microsoft 承认的一个错误 但 不会修复 如下所述 http connect microsoft com SQLServer feedback det
  • 使用extend.js有什么好处?

    我刚刚认识扩展 js https github com searls extend js 并且想知道使用该库是否比使用本机 JavaScript 具有附加价值 让我演示一下 With 扩展 js 我会声明一个命名空间 如下所示 extend
  • MySQL:永久设置 sql_mode

    通过 MySQL 命令行客户端 我尝试设置全局 mysql mode SET GLOBAL sql mode TRADITIONAL 这适用于当前会话 但在我重新启动服务器后 sql mode 将返回到其默认值 一个空字符串 如何将 sql
  • Codeigniter - 使用force_download函数下载文件

    我正在使用最新的 CI 我在当地工作时没有任何问题 但是当我将作品转移到实时服务器时 我遇到了问题 当我从下载选项卡下载文件时 文件将以正确的大小和格式下载 但是当我打开下载的文件时 例如 如果是图像 则图像不显示 或者如果是单词 则要求选
  • Java 不运行带参数的准备语句

    我正在使用PreparedStatement 来查询我的表 不幸的是 我没能做到这一点 我的代码很简单 PreparedStatement preparedStatement connection prepareStatement Sele
  • 我们可以在 Cubism 上使用自定义 JSON 数据吗?

    我看到了立体图 它们简直太神奇了 我有一个很大的 JSON 文件 其中包含 1000 个条目 其中包含时间戳和值 整数 Cubism 可以绘制这些图吗 我似乎找不到这方面的文档 Cubism 通常适用于实时数据 但您可以实现一个仅从 JSO
  • Swift:获取字典中键的数量

    对于快速数组 我们可以简单地使用count属性来找出集合中有多少个元素 然而 我们不能对字典键做同样的事情 执行此操作的唯一方法是使用 for 循环和计数器吗 var myDict String AnyObject intialize di
  • FFmpeg:如何将带有黑边的垂直视频转换为背景边模糊的 16:9 视频

    如何使用 FFmpeg 实现这一点 没有 FFmpeg 的示例 Adobe After Effects http www youtube com watch v yCOrqUA0ws4 索尼维加斯专业版 http www youtube c
  • Snakemake 和 pandas 语法

    我有一个输入文件如下 SampleName Run Read1 Read2 A run1 test true data 4k R1 fq test true data 4k R2 fq A run2 test samples A fastq
  • SQL Server 2012经典asp连接字符串

    我安装了 SQL Server 2012 Express 其中有一个名为BRD我创造的 我还创建了一个测试表 tempDemo 和一个测试存储过程 getStList 在里面BRD数据库 当我在查询窗口中运行存储过程时 它会起作用 因此我相
  • 移动设备上的视觉视口与布局视口

    我刚刚读了一篇关于视口的好文章 http www quirksmode org mobile viewports2 html这给我留下了一些关于移动设备上的视觉视口与布局视口的问题 布局视口的宽度和高度等于任何值 可以以最大缩小模式显示在屏
  • 在 Android 中制作自定义可绘制形状

    我想要像下面这样绘制 我可以在两个不同的 xml 文件中制作矩形和三角形 但我想联合它们来制作这样的可绘制对象 Use layer list制作这个自定义形状drawable res drawable custom shape xml
  • UnsatisfiedLinkError:无法从加载程序加载 X

    我正在尝试使用本机代码创建一个 android 项目来调用 OpenGL 函数 我正在按照本指南来启动该项目 http www learnopengles com calling opengl from android using the