Welcome 微信登录

首页 / 软件开发 / JAVA / 运用JNA保护你的遗留代码(二)

运用JNA保护你的遗留代码(二)2011-10-07 IT专家网 从Java中引用DLL代码

列表四演示代码引用DLL函数

public interface CLibrary extends Library {
CLibrary INSTANCE1 = (CLibrary)
Native.loadLibrary((Platform.isWindows() ? "nativecode" : "c"),
CLibrary.class);
int helloWorld(int divider);
}
public static void main(String[] args) {
CLibrary.INSTANCE1.helloWorld(77));
}

列表四,访问DLL函数

在列表四中,CLibrary实例被创建。这个对象允许指定的DLL被下载。接下来,是库的装入过程,标志 需要从库中标记——在列表四的实例中,只有一个标志,被称为helloWorld()。

列表五演示的程序来自列表四的代码

C:jnacode>java HelloWorld
Value is 1

列表五,调用的DLL的代码

在列表五中没有什么好惊奇的——值77获准进入函数。紧接着在函数内部,参数(77)被77除,得出答 案:1。

当我尝试着着手解决DLL的问题,与调用约定联系起来,我想看看生成DLL的过程。幸运的是,你可以 通过一种工具实现这个愿望,这个工具被称为Dependency Walker,通过Dependency Walker你可以看到 DLL的生成过程。为了实现,你需要下载一个免费的Dependency Walker副本,打开,然后把DLL装载在里 面。你就可以看见如图一所示的类似内容。

图一,DLL内部信息