小弟现在有个问题无法解决请各位大侠帮帮忙。
我有一个用delphi写的DLL文件。里面有一个函数
function sayHello(i:Integer):Integer;只是为了测试写的。
现在我想在java里调用这个函数。我的java类是这样的
package com.dll;public class TestDLL {
static{
System.loadLibrary("mydll");
}
public native int sayHello(int i);

public static void main(String[] args){
System.out.print(new TestDLL().sayHello(1));
}
}
我把mydll.dll放到了jre/bin下面。运行后出错了。
Exception in thread "main" java.lang.UnsatisfiedLinkError: sayHello
at com.dll.TestDLL.sayHello(Native Method)
at com.dll.TestDLL.main(TestDLL.java:10)
不知道为什么会出这样的错误。

解决方案 »

  1.   

    人家只说Java能调用C了,没有能调用pascal吧?
      

  2.   

    delphi我没学过.觉得也应该可以.
    但是一定要实现
    javah生成的那个.h文件里的 函数.
    那个函数的定义不能改.要不然.JAVA是不认识的!
      

  3.   

    DLL的命名有关系?自己写DLL好象很麻烦,命名社么的.
      

  4.   

    楼主这样调用是错误的,dll文件里面的函数借口是有规范的,好像可以用javah来生成  建议查资料去
      

  5.   

    谢谢各位。用javah生成头文件然后再生成dll文件的那部分资料我看过了。我现在的问题是dll是已定的。我是想用java调用一个现有的工程的dll文件。我在网上找到的资料说可以用生成的头文件生成一个合标准的dll文件,然后在实现在的函数里调用想调用的dll文件里的函数。不知道还有没有更好的解决办法。