使用JNA示例

JNA全称Java Native Access,是一个建立在经典的JNI技术之上的Java开源框架(https://github.com/twall/jna)。
JNA提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。
开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。
下面是一个简单的示例:
在VC下创建一个动态链接库项目JNAtest
在头文件里声明函数
extern “C” _declspec(dllexport) int add(int num1, int num2);
在源码里实现函数
int add(int num1, int num2) {
printf(“JNA test: %d + %d = %d”, num1, num2, num1 + num2);
return num1 + num2;
}
编译并导出dll文件
打开eclipse新建一个java project, 如JNATest,
在eclipse左边的Workspace项目管理器中右击项目JNATest,选择属性“Properties”,
点击“Properties”后,在弹出的“Properties for JnaTest”对话框中点击左边的“Java Build Path”,
然后再点击对话框中间的“Libraries”选项卡,最后点击右边的“Add External JARs…”按钮,
在弹出的“JAR Selection”对话框中找到jna.jar文件,点击“确定”按钮,
把刚刚的dll拷贝到工程的目录下,
然后在JNATest工程中定义一个表示链接库的接口
loadLibrary第一个参数就是你的dll名字,第二个就是当前接口的.class类型,接口里面的方法名要跟C的接口方法名一致:
public interface jnatest extends Library{
jnatest instance = (jnatest)Native.loadLibrary(“jnatest”,jnatest.class);
public int add(int a, int b);
}
写完就调用测试下
public static void main(String[] args) {
// TODO Auto-generated method stub
jnatest.instance.add(1,2);
}

原创文章,转载请注明: 转载自IT Code

本文链接地址: 使用JNA示例

【上一篇】
【下一篇】

使用JNA示例:目前有7 条留言

  1. 旧时王谢堂前燕,飞入寻常百姓家

    2014-08-15 下午 9:21 [回复]
  2. 站长你好,我是刚刚进入SEO行业的新人,这几天做了一个单页站,网站是:榨汁机哪个牌子好http://www.qujinli.com/ 不知道有没有什么不合乎SEO优化的地方,欢迎站长回访,如能指点一下,不胜感激!

    2014-08-18 上午 11:19 [回复]
    • 转瞬成空:

      对于SEO我也不了解,已回访

      2014-08-18 下午 7:50 [回复]
  3. 对于这些智能围观哈

    2014-08-23 下午 7:30 [回复]
    • 转瞬成空:

      欢迎围观~

      2014-08-23 下午 9:51 [回复]
  4. 不错的博客,支持一下!

    2014-08-27 下午 1:07 [回复]
    • 转瞬成空:

      谢谢,互相支持

      2014-08-27 下午 9:14 [回复]

发表评论

快捷键:Ctrl+Enter