当前位置:  开发笔记 > 编程语言 > 正文

UnsatisfiedLinkError:找不到指定的过程

如何解决《UnsatisfiedLinkError:找不到指定的过程》经验,为你挑选了1个好方法。

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

所以,问题是我添加了另一个使用新外部DLL的调用,并且在加载库时突然抛出了UnsatisfiedLinkError.消息是:'找不到指定的过程'.这似乎不是一个缺少依赖DLL的问题,因为我可以删除一个从属DLL并获得有关从属DLL丢失的不同消息.从我在网上找到的内容来看,似乎这条消息意味着DLL中缺少本机Java函数实现,但奇怪的是它没有这些额外的代码就可以正常工作.

有谁知道这可能导致什么?哪些类型的东西可以为UnsatisifedLinkError提供"指定的过程无法找到"消息?



1> matt..:

我解决了这个问题.这真是太过分了.对于UnsatisfiedLinkError,"无法找到指定的过程"消息表示无法找到根dll或从属dll中的函数.在JNI情况下,最可能的原因是本机JNI函数未正确导出.但是,如果加载了依赖DLL并且该DLL缺少其父级所需的函数,则显然会发生这种情况.

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

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有