使用Delphi实现JNI - 实例

使用Delphi创建一个DLL,提供JAVA所需要的函数。

1. 创建DLL工程

New->Other,选"DLL Wizard"

2. 增加pas到工程

Project->Add to Project...

把JNI.pas和其他工程需要的源文件加入到工程里。

3. 保存工程文件

注意:工程名即是动态库文件名。

附:

Umethod.pas

unit Umethod;

interface

uses
  SysUtils,
  Classes;

// procedure CreateFile(TFileName: String); // original source
function CreateFile(TFileName: String): Boolean;

implementation
uses
  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

时间: 2024-10-13 21:03:26

使用Delphi实现JNI - 实例的相关文章

Delphi中Tlist实例

http://blog.163.com/[email protected]/blog/static/74728469201132721428194/ Delphi中Tlist实例 2011-04-27 14:14:28|  分类: Delphi学习 |  标签:list  frmred  tform  frmblue  frmgreen  |举报|字号 订阅 下载LOFTER我的照片书  | unit Unit1; interface uses  Windows, Messages, SysUt

Ubuntu下编译Android JNI实例全过程

第一步:保证make和gcc可用 在shell中输入make-v,不报错就是对的.(可参考http://wenku.baidu.com/view/d87586c24028915f804dc24a.html.) 在shell中输入gcc-v,不报错就是对的. 第二步:安装NDK 下载NDK后,设置环境变量: 将android-ndk的路劲加到环境变量PATH中:sudogedit /etc/environment 然后再让这个更改的环境变量立即生效:source /etc/environment

Java native方法、JNI实例及常见错误分析

1.概述 今天在看java关于调用本机代码子程序来获得较快的执行时间,或者,你希望用一个专用的第三方的库,例如统计学包.然而,因为Java程序被编译为字节码,字节码有Java运行时系统解释(或动态编译),看起来在Java程序中调用本机代码子程序是不可能.幸运的是,这个结论是错误的.Java提供了native关键字,该关键字用来声明本机代码方法.一旦声明,这些方法可以在Java程序中被调用,就像调用其他Java方法一样. 2.native关键字用法 既然Java提供了native方法,那么如何实现

java native方法及JNI实例 (转)

转自:http://blog.csdn.net/xw13106209/article/details/6989415 1.参考文献: http://blog.csdn.net/youjianbo_han_87/article/details/2586375 http://blog.csdn.net/yangjiali014/article/details/1633017 http://blog.chinaunix.net/space.php?uid=7437948&do=blog&id=2

java native方法及JNI实例

1.参考文献: http://blog.csdn.net/youjianbo_han_87/article/details/2586375 http://blog.csdn.net/yangjiali014/article/details/1633017 http://blog.chinaunix.net/space.php?uid=7437948&do=blog&id=2054823 http://www.iteye.com/topic/72543 http://www.enet.com

Delphi Treeview 操作实例

怎么改变Treeview中的图标? OnClick事件Click获取Node.text 批量处理及实现TreeView结点拖拽的实例 //这个过程根据你的要求选择图标procedure TForm1.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);begin  if Node.HasChildren then      if Node.Expanded then          Node.ImageIndex := 3   //

Android JNI和NDK学习(09)--JNI实例二 传递类对象

1 应用层代码 NdkParam.java是JNI函数的调用类,它的代码如下: package com.skywang.ndk; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class NdkParam extends Activity { public static final String TAG="skywang--NdkParam"; /** Cal

Delphi Try Except 实例

//判断单位转换率 try um_rate := vp_mstr.F('vp_um_rate_d').AsFloat / vp_mstr.F('vp_um_rate_m').AsFloat; if um_rate <= 0 then abort else if (vp_mstr.F('vp_um').AsString = vp_mstr.F('part_um').AsString) and (um_rate <> 1) then abort else if (vp_mstr.F('vp_

Delphi对象的秘密:在Delphi中的类实例实际上是指向堆中的类实例数据的3 2位指针

在Delphi中的类实例实际上是指向堆中的类实例数据的32 位指针 当访问对象的域.方法和属性时,编译器会自动产生一些代码来处理这个指针.因此对于新手来说,对象就好像是一个静态变量.这意味着,Delphi无法像C++那样在应用程序的数据段中为类分配内存,而只能在堆中分配内存. 所以Delphi的对象实例需要最后自己调用Free()方法来释放,而不能在作用域结束之后被自动释放