由于工作原因需要在JA V A开发的项目中调用DELPHI开发的dll动态库,查询了很多资料总结出方法有以下几种:
1、通过JNI调用,这种方式如果调用C/C++开发的dll动态库文件没有什么问题.但是问
题是库是用DELPHI生成的,用JNI不能直接访问,所以只能用C封装DELPHI的库供JNI访问,但是这样很麻烦,而且双层封装不稳定;又或者在使用DELPHI开发dll时引用一个jni.pas的接口单元,按照JNI的方式编写生成dll这样才可以调用。
下面我举例说明一下怎样在使用DELPHI开发可供JA V A的JNI直接调用的dll:首先用DELPHI新建一个dll工程testDll.dpr;之后我们需要下载jni.pas 加入到我们的工程中,这是国外的高手写的程序单元,它方便我们的Delphi 程序与JA V A 交互。
解压之后里面有两个文件,将其存放在工程的目录下;接下来我们编写Delphi 代码: library testDll; //这里设置动态链接库的名称,因为我们刚才写JA V A 类时是用testDll,所以这里了要设置为testDll:
代码完成,我们Ctrl+F9 编译DLL ,生成testDll.dll 后,我们把他复制到Java 工程目录;