JAVA UnsatisfiedLinkError(调用Delphi的DLL)

JNI为调用DLL提供了接口,网上文章很多,一般调用的结构为:

package callDll.test;


public class Cdll {

 static {
        System.loadLibrary("javaCall");
    }
    public native String fstring(String s);

 

但使用时会出现UnsatisfiedLinkError

 这种错误一般是加载用JNI加载DLL时出的问题,有两类问题:

1.

   错误信息:UnsatisfiedLinkError: NO XXXXX in java.liberary.path

   原因: 显然是找不到指定的DLL或者包,那就去找吧

   解决方法:首先可以通过用System.load(“全路径”);加载,看能不能成功,如果成功,那说明你的系统环境没配好。若是不成功,则说明该DLL或包是缺少的,仔细查找都应该能找到。

 

2. 错误信息:UnsatisfiedLinkError:fstring;

   原因:这是说明该方法与声明不符合。

  解决方法:这个问题是我将两个Java工程合并时发现的问题,合并之后调用怎么都不好用。后来发现合并后Cdll所在的包 对调用有很多影响,这跟在delphi中开发给java调用的dll在导出方法时的命名规则相关。 以上述为例:在delphi中其方法名为 Java_test_Cdll_fstring, 该命名规则为Java_<包路径,其中的"."以"_"代替>_类名_方法名。 所以在合并工程后有两种方法:一是修改一下包结构;二是修改delphi中dll的方法名,改为 Java_callDll_test_Cdll_fstring 即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值