windows下生成jni的dll文件(java native方法)
2017-05-14 06:44
483 查看
编写java类, 类中有一个native方法。
生成.class文件
生成.h文件
.h文件的内容:
编写方法的实现 HelloImpl.c
下载安装mingw_64位, 并将其安装目录配置到系统环境变量
mingw_64位最新下载地址:mingw_64位最新版下载地址
该软件的作用是在windows系统使用gcc和g++命令,对c文件和c++文件进行编译,生成.o文件, 进而生成.dll文件。64位的只能生成64位的dll文件。若要生成32位的dll文件,请下载32位的mingw.
mingw_32最新版下载地址:mingw_32位最新版下载地址
安装完后将{minw安装目录}\mingw64\bin放到path即可。
生成.o文件
执行完上述命令会生成HelloImpl.o文件。
生成dll文件
执行java命令, 验证是否成功。
或
如果没有dll动态链接库,输出结果是:
若存在动态连接库,输出结果是:
The End.
public class Hello { public native void sayHello(); static { System.loadLibrary("HelloImpl");//加载生成的dll文件 } public static void main(String[] args) { new Hello().sayHello(); } }
生成.class文件
执行命令: javac Hello.java
生成.h文件
执行命令: javah Hello
.h文件的内容:
编写方法的实现 HelloImpl.c
下载安装mingw_64位, 并将其安装目录配置到系统环境变量
mingw_64位最新下载地址:mingw_64位最新版下载地址
该软件的作用是在windows系统使用gcc和g++命令,对c文件和c++文件进行编译,生成.o文件, 进而生成.dll文件。64位的只能生成64位的dll文件。若要生成32位的dll文件,请下载32位的mingw.
mingw_32最新版下载地址:mingw_32位最新版下载地址
安装完后将{minw安装目录}\mingw64\bin放到path即可。
生成.o文件
执行命令: gcc -c -I"%JAVA_HOME%\include" - I"%JAVA_HOME%\include\win32" HelloImpl.c
执行完上述命令会生成HelloImpl.o文件。
生成dll文件
执行命令: gcc -Wl,--add-stdcall-alias -shared -o HelloImpl.dll HelloImpl.o
执行java命令, 验证是否成功。
执行命令: java Hello
或
执行命令: java -Djava.library.path=. Hello
如果没有dll动态链接库,输出结果是:
若存在动态连接库,输出结果是:
The End.
相关文章推荐
- Android(java)学习笔记260:JNI之native方法头文件的生成
- windows7下,Java中利用JNI调用c++生成的动态库的使用步骤
- windows7下,Java中利用JNI调用c++生成的动态库的使用步骤
- Android之JNI实例一--简单的Java调用Native方法
- 在 Windows 中实现 Java 本地方法-Java native 关键词
- Java native方法、JNI实例及常见错误分析
- java native方法及JNI实例
- JNI调用native方法出现 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()异常的解决办法
- java native interface JNI 调用Java方法
- [JNI] java 多线程调用native 方法
- java native方法及JNI实例
- java native方法及JNI实例
- JAVA JNI配置教程 使用JAVA调用Native方法打印Hello World
- java native方法及JNI实例
- 用JNI技术Java调用dll文件(由lib文件生成)
- 【学习Android NDK开发】Java通过JNI调用native方法
- java native方法及JNI实例
- 在Eclipse里利用javah把java代码声明的JNI方法自动生成成C\C++头文件
- java native方法及JNI实例
- [2014.1.31] Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)