使用Delphi实现JNI - 实例
来源:互联网 发布:mt4顾比均线指标源码 编辑:程序博客网 时间:2024/06/11 08:00
JNI是Java Native Interface的缩写。从Java 1.1开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。
使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少保证本地代码能工作在任何Java 虚拟机实现下。
下面我们使用Delphi创建一个DLL,提供JAVA所需要的函数。
1. 创建DLL工程
New->Other,选"DLL Wizard"
2. 增加pas到工程
Project->Add to Project...
把JNI.pas和其他工程需要的源文件加入到工程里。
3. 保存工程文件
注意:工程名即是动态库文件名。
附:
Umethod.pas
unit Umethod;interfaceuses SysUtils, Classes;// procedure CreateFile(TFileName: String); // original source function CreateFile(TFileName: String): Boolean;implementationuses Udefine;function CreateFile(TFileName: string): Boolean;Begin (* If Not FileExists(TFileName) Then Begin genCRCtable; FileStream := TFileStream.Create(TFileName, fmCreate); FileHead.Version := '4.2.0.2'; FileHead.author:='xiaobinORA'; FileHead.CRC32:=calCRCvalue; Filehead.UpdateDate := Now; FileStream.Write(FileHead, SizeOf(FileHead)); End Else Begin *) if Not FileExists(TFileName) then begin Result := False; Exit; end; FileStream := TFileStream.Create(TFileName, fmOpenReadWrite); Result := True; //End;End;end.
Udefine.pas参见[1]
xbfLibR.dpr参见[2]
JNI.pas参见[3]
下载地址:http://www.pudn.com/downloads689/sourcecode/java/detail2777247.html
参考文档:
1. 辛亥百年纪念 - 产品组件系列02
2. 辛亥百年纪念 - 产品组件系列04
3. Using the Java Native Interface with Delphi - Matthew Mead
JNI_pas.zip
- 使用Delphi实现JNI - 实例
- 使用Delphi实现JNI - 1
- 使用Delphi实现JNI - 2
- 使用Delphi实现JNI - 3
- JNI实现实例
- JAVA JNI 使用实例
- JAVA JNI 使用实例
- Android studio使用JNI实例
- Android Studio JNI使用实例
- Android studio使用JNI实例
- Android studio使用JNI实例
- Android studio使用JNI实例
- Delphi接口使用实例介绍
- DELPHI TTcpServer控件使用实例
- JNI使用实例:Android Studio使用JNI编译so库
- JNI机制实例---Log打印函数JNI实现机制
- Windows环境下JNI的实现实例
- java JNI 实例 实现调用c++函数
- 文章发布文章
- i春秋:日益增多的企业重要资料外泄
- JavaString、StringBuilder、StringBuffer总结
- DB2使用经验积累
- Oracle未启用Partitioning功能解决
- 使用Delphi实现JNI - 实例
- 如何查看python selenium的api
- Sicily 1920 Divide The Stones
- 抽象类与接口的区别
- hdu 5242 树链剖分找权值最大的前k条链
- __stdcall,__cdecl,_cdecl,_stdcall,。__fastcall,_fastcall 区别简介
- 机器学习实战
- 人脸表情识别文献阅读
- poj 3276