Java使用JNative调用DLL库
编写测试DLL文件,源文件参照JNA调用用的DLL文件。地址:http://www.cnblogs.com/vevy/p/9076941.html
(很重要)右键项目 --> 属性 --> 常规 --> 选择MFC的使用 --> 改成在静态库中使用MFC,在.h头文件的函数声明中添加 extern "C" 标识, .h文件部分代码
#define JNADLL extern "c" _declspec(dllexport)
extern "C" JNADLL int add(int x, int y);
导入Jnative.jar包和JNativeCpp.dll文件到项目目录下,如果是Linux系统,导入的为libJNativeCpp.so而不是JNativeCpp.dll。下载地址:https://download.csdn.net/download/w139074301/10427312
编写测试类JnativeTest,代码如下
public class JnativeTest {
public static void main(String[] args) {
JNative.setLoggingEnabled(true); //显示日志
try {
JNative c = new JNative("MyDLL", "add"); //新建JNative对象,第一个参数为需要调用的DLL文件位置,第二个参数为调用的方法名
c.setRetVal(Type.INT); //设定返回值
c.setParameter(0, 1); //设定第一个参数的值
c.setParameter(1, 2); //设定第二个参数的值
; c.invoke(); //执行调用
System.out.println("java调用dll动态库的add方法后执行的结果为:" + c.getRetVal());
}
catch (NativeException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
- 运行
Jnative如果报错,可能为只支持32位JDK
Java使用JNative调用DLL库的更多相关文章
- Java使用JNA调用DLL库
Java调用DLL方法有三种,JNI.JNA.JNative, 本文为JNA JNA为使用jna.jar包,下载地址:http://www.java2s.com/Code/Jar/j/Download ...
- Java使用JNI调用DLL库
JNI是Java自带的方法,不需要引入第三方jar包,优点是因为是java自带的方法,兼容性较好,缺点就是代码书写繁琐 新建Java项目Test --> 新建测试类TestNative,声明本地 ...
- Java(使用JNA)调用DLL库与C#调用DLL库的对比
前言:在项目中经常使用DLL库对硬件进行操作,在发卡过程中使用频率尤为多,今天就Java与C#中调用DLL库的使用区别做一个介绍,本文着重具体的代码编写,具体过程看以下代码. 前提条件: 笔者已经封装 ...
- Java通过JNI调用dll详细过程(转)
源:Java通过JNI调用dll详细过程 最近项目有这样一个需求,在已有的CS软件中添加一个链接,将当前登录用户的用户名加密后放在url地址中,在BS的login方法里通过解密判断,如果为合法用户则无 ...
- java 用JNA调用dll 参考文档
1 Java调用C语言动态库(JNA方式):回调函数.结构体数组传参.结构体数组返回 2jna结构体数组 JNA结构体数组 3JNA调用C语言动态链接库学习实践总结 4 Java 通过 JNA 调 ...
- java JNative调用DLL中带引用类型的方法
DLL中的被调函数有两个参数,第二个参数是int64类型的引用类型,因此创建8byte的MemoryBlock: JNative n = null; try { n = new JNative( ...
- Unity中调用DLL库
DLL -- Dynamic Link Library(动态链接库文件),这里以Window平台为例. Unity支持的两种语言生成的DLL库(C++.C#),这里以C#为例,C++网上可以搜索很详细 ...
- C#之改变窗体icon图标、新建类文件、调用dll库
一.改变窗体的图标 没有修改之前为: 修改之后为自己想要的图标: 需要在窗体Form1.cs属性里边添加icon图片文件: 二.新建cs类文件 如下图所示,新建一个类文件,我用于来调用库文件也可以来定 ...
- java调用dll库
1.dll叫动态链接库,作用是用某种语言封装好某些函数生成可供不同语言调用的.dll文件,通常是用C++编写生成,因为C++可以对很多硬件操作方便而其他高级语言不行 2.dll生成参考:http:// ...
随机推荐
- ACM_Uppercase(水题)
Uppercase Time Limit: 2000/1000ms (Java/Others) Problem Description: 给出一句中间无特殊符号的英语句子,要求将各单词的首字母改大写. ...
- Matlab vs Python 作图
-- Matlab 作图示例 x=-3:0.00003:3; y1=sin(x)./x; y2=x./sin(x); plot(x,y1,x,y2); -- Python 作图示例 import nu ...
- 400 Nth Digit 第N个数字
在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字.注意:n 是正数且在32为整形范围内 ( n < 231).示例 1:输入:3 ...
- Microsoft SQL Server学习(七)--函数视图
系统函数 视图 索引 1.系统函数 (1) ()数学函数 Abs() 绝对值 Floor() 向下取整 Ceiling() 向上取整 Sin() 返回指定角度(以弧度为单位)的三角正弦值 Pi() 圆 ...
- Java获取一个文件夹内的所有文件(包括所有子文件夹内的)
输入文件数组.文件夹路径 返回的文件在输入的文件数组中 private void getFiles(ArrayList<File> fileList, String path) { Fil ...
- JavaScript 单例,Hash,抛异常
1. 单例 ECMA 5 版 记得以前写过几种单例实现,找不到了... function Singleton() { if (this.constructor.instance) { return t ...
- SQL关于触发器及存储过程的创建
使用T-SQL语句来创建触发器 基本语句如下﹕ create trigger trigger_name on {table_name | view_name} {for | After | Ins ...
- react-router 4.x 路由按需加载
react-router 4 代码分割(按需加载) 官方文档 https://serverless-stack.com/chapters/code-splitting-in-create-react ...
- vuex状态管理demo
vuex状态管理主要包含四个概念 mapState,mapMutations,mapGetters,mapActions. 编写vuex文件夹下面的store.js import Vue from ...
- RC: blkio throttle 测试
本文将测试一下使用cgroup的blkio组来控制IO吞吐量 : 测试环境CentOS 7.x x64 创建一个继承组 [root@150 rg1]# cd /sys/fs/cgroup/blkio/ ...