gpt4 book ai didi

java - 不满意链接错误 : The specified procedure could not be found

转载 作者:搜寻专家 更新时间:2023-10-30 21:04:37 26 4
gpt4 key购买 nike

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

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

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

最佳答案

我发现了问题。这是一个愚蠢的。 UnsatisfiedLinkError 的消息“找不到指定的过程”表示找不到根 dll 或 从属 dll 中的函数。在 JNI 情况下,最可能的原因是 native 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,并且其中没有预期的函数。

关于java - 不满意链接错误 : The specified procedure could not be found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/159846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com