当前位置: 首页 > 面试题库 >

UnsatisfiedLinkError:找不到指定的过程

常波鸿
2023-03-14
问题内容

我正在用C ++编写一些JNI代码,以便从Windows
XP的applet中调用。我已经能够成功运行applet并加载和调用JNI库,甚至可以在其他DLL中调用它。我通过设置PATH系统环境变量来使其工作,以包括所有DLL所在的目录。

因此,问题在于,我添加了另一个使用新的外部DLL的调用,并且突然在加载库时引发UnsatisfiedLinkError。消息为:“找不到指定的过程”。缺少依赖的DLL似乎不是问题,因为我可以删除依赖的DLL并获得有关依赖DLL丢失的另一条消息。从我在网上可以找到的信息来看,该消息表明DLL中缺少本机Java函数实现,但是奇怪的是,如果没有这些额外的代码,它就可以正常工作。

有谁知道这可能是什么原因?什么样的事情可以为UnsatisifedLinkError提供“找不到指定的过程”消息?


问题答案:

我解决了这个问题。这是一个傻瓜。针对UnsatisfiedLinkError的消息“找不到指定的过程”指示在根dll或 从属dll中
找不到函数。在JNI情况下最可能的原因是本地JNI函数未正确导出。但是,如果加载了依赖的DLL并且该DLL缺少其父级所需的功能,则可能会发生这种情况。

举例来说,我们有一个名为input.dll的库。DLL的搜索顺序是始终首先在应用程序目录中查找,最后在PATH目录中查找。过去,我们总是在与input.dll相同的目录中运行可执行文件。但是,Windows系统目录(位于DLL搜索顺序的中间)中还有另一个input.dll。因此,当从Java
applet运行此代码时,如果我在applet中包含上述代码,从而导致input.dll被加载,则会从系统目录中加载input.dll。因为我们的代码期望input.dll中的某些功能不存在(因为它是另一个DLL),所以加载失败并显示有关缺少过程的错误消息。并不是因为JNI函数导出错误,而是因为加载了错误的依赖DLL而没有,



 类似资料:
  • 我试图开发一个C++DLL的JNA包装器。 在com.sun.jna.function.(function.java:252),在com.sun.jna.nativelibrary.getfunction(nativelibrary.java:600),在com.sun.jna.nativelibrary.getfunction(nativelibrary.java:576),在com.sun.j

  • 我试图打印TSC-244 Pro条形码标签打印机从GWT网络应用程序。他们给出tsclib.dll。因此,我使用jna.jar并将tsclib.dll文件复制到C:\windows和[my_project_dir]\war\WEB-INF\lib。它的工作,但当我部署到apache Tomcat。它不工作,我有以下错误。请给我解决办法。谢谢。 严重:分派传入的RPC调用com.google.gwt

  • 我正在尝试使用可视化工作室创建一个dll文件,并在java项目中使用/访问它。库似乎被加载了,但总是抛出相同的异常:线程“主”java.lang.中的异常不满意链接错误:查找函数“函数”时出错:找不到指定的过程。我的C / C技能不是最好的,所以问题可能就在那里。我试图编辑h和cpp文件,使用类,命名空间,静态方法和在网络上找到的其他人员,但无所事事。我也看到其他帖子谈论Depency Walke

  • 使用OracleDB时出错,错误为“找不到指定的过程”。节点安装OracleDB正常。为构建而执行的步骤如下 已安装Visual Studio 2017 Visual C 14.0 使用/app.js内容运行代码时出错 使用strongloop/loopback CLI时出现相同错误。任何指示都会有帮助

  • 问题内容: 有一块代码可以在android 4.1.2上正常工作,但在4.0.3上却不能正常工作,崩溃日志为4.0.3 我收到UnsatisfiedLinkError异常 请指导我谢谢 这是我的课 这是我从中编译并创建二进制“ libsqliteX.so”文件的源cpp文件http://www.sqlite.org/android/tree?ci=trunk&re=jni|src/org/sqli

  • 问题内容: 我已经开始使用Python处理图片,并且想开始使用PIL(枕头)。要安装它,我跑了。安装时,以前未安装PIL。我还尝试卸载并重新安装它,以及使用。 当我在Python中运行它时,第一行是: 我检查了目录,并且PIL文件夹下存在文件_imaging.cp36-win_amd64.pyd。 如果存在所需的DLL,为什么会发生这种情况?我该如何解决? 问题答案: 我在Python 3.6中也