日期:2011-03-22 16:17:00 来源:本站整理
@dll.import指导号令[Java编程]
本文“@dll.import指导号令[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
作为利用J/Direct唯一的途径,@dll.import指导号令相当机动.它供应了为数众多的改正符,可用它们自定义同非Java代码成立链接关系的方法.它亦可利用于类内的一些办法,或利用于整个类.也就是说,我们在那个类内声明的全部办法都是在相同的DLL里实现的.下面让我们具体研究一下这些特点.
1. 别名处理和按次序链接
为了使@dll.import指导号令能象上面显示的那样工作,DLL内的函数必须按名字导出.但是,我们有时想利用与DLL里原始名字差别的一个名字(别名处理),不然函数便大概按编号(比方按次序)导出,而不是按名字导出.下面这个例子声明了FinestraDiMessaggio()(意图大利语说的“MessageBox”).正如大家看到的那样,利用的语法是非常简单的.
下面这个例子展示了若何同DLL里并非按名字导出的一个函数成立链接,那个函数事实是按它们在DLL里的位置导出的.这个例子假定有一个名为MYMATH的DLL,这个DLL在位置编号3处包含了一个函数.那个函数获得两个整数作为自变量,并返回两个整数的和.public class Aliasing { public static void main(String args[]) throws UnsatisfiedLinkError { FinestraDiMessaggio(0, "Created by the MessageBox() Win32 func", "Thinking in Java", 0); } /** @dll.import("USER32", entrypoint="MessageBox") */ private static native int FinestraDiMessaggio(int hwndOwner, String text, String title, int fuStyle); }
可以看出,唯一的差别就是entrypoint自变量的情势.public class ByOrdinal { public static void main(String args[]) throws UnsatisfiedLinkError { int j=3, k=9; System.out.println("Result of DLL function:" + Add(j,k)); } /** @dll.import("MYMATH", entrypoint = "#3") */ private static native int Add(int op1,int op2); }
2. 将@dll.import利用于整个类
@dll.import指导号令可利用于整个类.也就是说,那个类的全部办法都是在相同的DLL里实现的,并具有相同的链接属性.指导号令不会由子类担当;考虑到这个缘由,并且由于DLL里的函数是自然的static函数,所以更佳的计划筹划是将API函数封装到一个独立的类里,以下所示:
由于MessageBeep()和MessageBox()函数已在差别的类里被声明成static函数,所以必须在调用它们时规定作用域.大家大概认为必须用上述的办法将全部Win32 API(函数、常数和数据范例)都映射成Java类.但幸运的是,根本没必要这样做./** @dll.import("USER32") */ class MyUser32Access { public static native int MessageBox(int hwndOwner, String text, String title, int fuStyle); public native static boolean MessageBeep(int uType); } public class WholeClass { public static void main(String args[]) throws UnsatisfiedLinkError { MyUser32Access.MessageBeep(4); MyUser32Access.MessageBox(0, "Created by the MessageBox() Win32 func", "Thinking in Java", 0); } }
以上是“@dll.import指导号令[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论