首页 新闻 会员 周边

dll 动态库加载??

0
悬赏园豆:50 [已解决问题] 解决于 2023-03-31 14:19

如题,提示异常:java.lang.UnsatisfiedLinkError: 动态链接库(DLL)初始化例程失败。
代码:
ReadCardJna readCard = Native.load("readcard",ReadCardJna.class);
目前动态库文件放在程序根目录。

明日小路的主页 明日小路 | 菜鸟二级 | 园豆:466
提问于:2023-03-30 15:11
< >
分享
最佳答案
0

该错误通常表示您的Java程序无法加载指定的动态链接库文件。这可能是由于以下原因之一导致的:

动态链接库文件不在正确的位置。
请确保将readcard.dll文件放在正确的位置。您可以使用绝对路径指定动态链接库的位置,而不是使用相对路径。

动态链接库文件缺少其他依赖项。
请检查您的动态链接库是否依赖于其他动态链接库或系统库。您需要确保这些依赖项也可用,并已正确配置。

动态链接库文件与您的Java程序不兼容。
请确保您的动态链接库与您的Java程序兼容,并且它们都是使用相同的架构编译的(例如,32位或64位)。

建议您检查上述原因,并尝试解决问题。如果您仍然无法解决问题,请提供更多细节,以便我可以提供更准确的建议。

收获园豆:50
Technologyforgood | 大侠五级 |园豆:5639 | 2023-03-30 18:54

windos是64位,jdk是32位,tomcat32位。idea开发。
我用了2中方式加载类库仍旧不行。
方式一:
static {
System.loadLibrary("readcard");
}

public native Object ReadSSECard_s();

public static void main(String[] args) {
    ReadCardJnaTest readCardJnaTest = new ReadCardJnaTest();
    Object o = readCardJnaTest.ReadSSECard_s();
    System.out.println(o);
}

异常:(windows/system32 下存放了 readcard.dll,项目resources目录下也有,jdk/bin 下也有)
Exception in thread "main" java.lang.UnsatisfiedLinkError: no readcard in java.library.path
或者:
C:\Program Files (x86)\Java\jdk1.8.0_361\bin\readcard.dll: Can't find dependent libraries

方式二:
public interface ReadCardJna extends Library {

ReadCardJna readCard = Native.load("readcard",ReadCardJna.class);
Object ReadSSECard_s();
 public class Main{
    public static void main(String[] args) {
        System.setProperty("jna.library.path", "E:\\computer\\allInstall\\readcard20211213");
        Object certificate = ReadCardJna.readCard.ReadSSECard_s();
        System.out.println(certificate);
    }
}

}

异常:
thread "main" java.lang.UnsatisfiedLinkError: 找不到指定的模块。

明日小路 | 园豆:466 (菜鸟二级) | 2023-03-31 11:53

@明日小路: csdn提问的是你吧,我昨天说的那个有没有试试,就是你电脑确实vc++ 运行库,2015,2020等。 还有一个问题就是你这个dll本身就是有问题的,你说了是别人给的,这个无法保证他是否完整的。

南宫懿痕 | 园豆:298 (菜鸟二级) | 2023-03-31 14:15

@南宫懿痕: 是我,下载VC++ 装了,还是没效果。

明日小路 | 园豆:466 (菜鸟二级) | 2023-03-31 14:18

@明日小路: 我感觉你那个dll本身就有问题。我试下自己生成的

南宫懿痕 | 园豆:298 (菜鸟二级) | 2023-03-31 14:19

@明日小路: 果然是你的dll有问题,,我刚才试下其他dll都是可以的

南宫懿痕 | 园豆:298 (菜鸟二级) | 2023-03-31 14:43

@南宫懿痕: 对方还有个 readcard.lib 文件,跟这个有关系吗?我把这个 readcard.lib 跟 readcard.dll 放一块,也不行。

明日小路 | 园豆:466 (菜鸟二级) | 2023-03-31 14:45

@明日小路: 这个dll你可能要问下给你的人,我这边刚才加载一下aspsoe.cell.dll 这个是没问题。这个dll是第三方公司开发的操作excel的。

南宫懿痕 | 园豆:298 (菜鸟二级) | 2023-03-31 14:59
其他回答(1)
0

我也遇到这个问题了,请问解决了吗

rayboo | 园豆:202 (菜鸟二级) | 2023-05-25 17:48

把对方的DLL ,丢到对应的环境下。我的DLL是win 32位的,我把它丢到tomcat32 下。注意,它相应的依赖也要丢进去。

支持(0) 反对(0) 明日小路 | 园豆:466 (菜鸟二级) | 2023-05-26 10:50

@明日小路: 你那边的dll文件方便发我一份不,我感觉我这边的文件有问题 只有700多K 邮箱rayboo@qq.com 谢谢

支持(0) 反对(0) rayboo | 园豆:202 (菜鸟二级) | 2023-05-29 08:33

@rayboo: 抱歉,这个给不了,算是ZF的DLL,不敢随意给;且我这边的DLL单个也运行不了,还有我不知道的依赖。

支持(0) 反对(0) 明日小路 | 园豆:466 (菜鸟二级) | 2023-05-29 09:32

@明日小路: 好的 谢谢

支持(0) 反对(0) rayboo | 园豆:202 (菜鸟二级) | 2023-05-29 09:34

@明日小路: 我这边的 dll 文件名字跟你一摸一样 也是 readcard20211213 这个,我试下把它放到32位的Tomcat ,方便加个微信不 Raysboo

支持(0) 反对(0) rayboo | 园豆:202 (菜鸟二级) | 2023-05-29 09:41

@rayboo: 你先试试行不行; 如果你知道dll的依赖,那就把它丢到tomcat32 的src 目录下,如果不知道dll的全部依赖,那就把对方提供的所有文件丢到bin下就好了;我就是这么干的。

支持(0) 反对(0) 明日小路 | 园豆:466 (菜鸟二级) | 2023-05-30 10:16

@明日小路: 你调试的电脑连着医保专网没有,我现在是在自己的电脑上没有连接医保专网

支持(0) 反对(0) rayboo | 园豆:202 (菜鸟二级) | 2023-05-30 17:52

@rayboo: 我就是放在专网的电脑上测试的。

支持(0) 反对(0) 明日小路 | 园豆:466 (菜鸟二级) | 2023-05-30 17:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册