Java调用C/C++代码-生成java调用的DLL
来源:互联网 发布:linux环境变量文件 编辑:程序博客网 时间:2024/04/29 03:58
JNI,是Java Native Interface的简称,中文是“Java本地调用”
JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。解决JAVA对本地操作的一种方法就是JNI。
JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,
JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法
1.新建测试类,声明本地方法
<pre name="code" class="java">package cn.com.reformer.license;public class testJavaDLL { public native int getid(); public static void main(String[] args) { System.loadLibrary("javadll"); testJavaDLL dll = new testJavaDLL(); System.out.println(dll.getid()); }}
2.生成头文件(.h文件->供C/C++使用)
1)在测试类目录下打开DOS窗口(长按Shift+鼠标右键,选择在此处打开命令窗口)
(如果没有包名可这样操作:
1.编译 javac testJavaDLL.java
2.生成头文件:javah testJavaDLL
2)生成头文件(格式javah 包名.类名)
javah -encoding utf-8 -classpath . 包名.类名(解决编码问题)
注意:我的包名为cn.com.reformer.license,所以在包名的根目录下执行
3)打开cn_com_reformer_license_testJavaDLL.h文件如下:
下面需要在C/C++中实现JNIEXPORT jint JNICALL Java_cn_com_reformer_license_testJavaDLL_getid()函数
3.新建一个动态链接库空项目,引入上面生成的头文件,会报下面的错误
当然是因为缺少文件:jni.h 和jni_md.h(JNI提供)
将上述文件引入C/C++项目,所示文件在如下目录
是否还会报错,头文件虽引入了,但是项目找不到文件,此时可将cn_com_reformer_license_testJavaDLL.h文件中的#include <jni.h> 修改为#include "jni.h"
现在可以成功生成动态链接库,此时项目结构如下:
4.64位JDK无法加载32位DLL,需要新建一个X64平台
5.将javadll.dll放到JDK的bin目录下(笔者目录:C:\Program Files\Java\jdk1.7.0_80\bin)
现在运行testJavaDLL类,控制台输出1,程序返回值就是1,正确!!!
- Java调用C/C++代码-生成java调用的DLL
- JAVA技巧(Java中调用C/C++生成的DLL)
- JAVA中调用C/C++生成的DLL
- Java中调用C/C++生成的DLL
- Java中调用C/C++生成的DLL
- Java中调用C/C++生成的DLL
- Java JNI调用dll中的C代码的流程
- C调用java代码
- C调用java代码
- java 调用C代码
- java调用C/C++写的dll
- java调用C的dll 【转】
- java调用(c+opencv)的DLL
- java 调用C写的DLL
- JAVA JNI调用C编写的dll
- java调用c、c++的dll
- JAVA调用C++/C#的DLL
- Java调用C#dll全过程
- CentOS 添加配置多个Tomcat
- 第八届河南省赛 zzuoj 10408: C.最少换乘 (djs&&字符串转数字)
- iOS中UIImage存为本地文件,UIImage转换为NSData
- 简单小方法教你如何快速提高记忆力
- Android的ListView控件几种常见的属性
- Java调用C/C++代码-生成java调用的DLL
- 加大tomcat的java内存
- 往手机通知栏发送一条通知
- 加入点击时间间隔的点击事件IntervalOnClick
- 2015年年终总结----磕磕绊绊的一年
- iOS Masonry autoLayout 动画详解
- C++继承、虚继承、虚函数类的大小问题
- 在代码中修改TextView的DrawableRight图片
- JSTL标签 参考手册