您的位置:首页 > 编程语言 > Delphi

delphi&Java&JNI一次体验

2007-07-09 14:32 288 查看
本人以前一直操delphi,最近开始学习java,但是老本不能丢啊,再说,delphi在某些方面确实有比java快速优越的地方(不用多说哈)!呵呵,还说有JNI技术正好有这个机会将这两种技术结合。本来以为比较简单,但是一个路径问题居然弄的我冒皮皮。

先将我的问题描述一些,免得新手犯和我一样的困惑!

1,首先定义java一段的本地函数:

public class HelloWorld {
 
       public native void printText();    //delphi短需要实现的函数
 
       static {
                System.loadLibrary("DelphiAction");
        }
         
        public static void main(String[] args) {
                //创建对象并调用里面的 native 方法.
                System.out.println(System.getProperty("java.library.path"));
                System.out.println("start");
                HelloWorld hw = new HelloWorld();
                hw.printText();
        }
}

2.delphi的实现:

  JNI in 'JNI.pas';

procedure Java_HelloWorld_printText(PEnv: PJNIEnv; Obj: JObject); stdcall;
begin

      Writeln('您好!看到效果了吧。');
end;

{$R *.res}

exports
        Java_HelloWorld_printText;

end.

(注意需要一个JNI的pas文件,网上有啊,随便下,是一个国外的牛人写的)

3.delphi调用dll.开始我将这个dll放在和java工程包的同一个文件夹下,以为这样最省事,结果总是出错:

Exception in thread "main" java.lang.UnsatisfiedLinkError.........

于是我将这个dll system32,system放,还是这个错误。

××××××××××××××××××××××

最后,放在C:/Program Files/Java/jdk1.5.0/jre/bin目录中,哈哈,居然通过。

恭喜,据说这个路径就是所谓的jvm的路
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息