当前位置:七道奇文章资讯编程技术Java编程
日期: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”).正如大家看到的那样,利用的语法是非常简单的.
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);
}
下面这个例子展示了若何同DLL里并非按名字导出的一个函数成立链接,那个函数事实是按它们在DLL里的位置导出的.这个例子假定有一个名为MYMATH的DLL,这个DLL在位置编号3处包含了一个函数.那个函数获得两个整数作为自变量,并返回两个整数的和.
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);
}
可以看出,唯一的差别就是entrypoint自变量的情势.

2. 将@dll.import利用于整个类
@dll.import指导号令可利用于整个类.也就是说,那个类的全部办法都是在相同的DLL里实现的,并具有相同的链接属性.指导号令不会由子类担当;考虑到这个缘由,并且由于DLL里的函数是自然的static函数,所以更佳的计划筹划是将API函数封装到一个独立的类里,以下所示:
/** @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);
  }
}
由于MessageBeep()和MessageBox()函数已在差别的类里被声明成static函数,所以必须在调用它们时规定作用域.大家大概认为必须用上述的办法将全部Win32 API(函数、常数和数据范例)都映射成Java类.但幸运的是,根本没必要这样做.
  以上是“@dll.import指导号令[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • SQL 无法装载DLL Microsoft缘由(无法改正sa密码)
  • 在windows中注册dll文件的办法
  • 教大家在Windows中注册dll文件办法
  • 办理windows 7下 soudmax.dll出错问题
  • 办理未找到comres.dll的文件办法
  • XP开机时DLL出错提醒的办理办法
  • 办理远程桌面不能衔接,呈现awgina.dll代替错误的办法
  • @dll.import指导号令
  • Windows系统巧用Rundll32卸载Java虚拟机
  • <b>Windows下DLL编程技术及利用</b>
  • <b>一步一步实现MFC扩大DLL中导出类和对话框</b>
  • <b>BCB编写DLL终极手册</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .