日期:2014-05-17 浏览次数:20881 次
首先推荐一篇文章:? http://www.wangchao.net.cn/bbsdetail_1754615.html
? ? ?http://blog.csdn.net/abowu/article/details/7245609? 1~4 篇文章
?
1:编写Java源程序
2:.java 通过编译生成 .class
3: ?.class编译生成对应的.h
4: ?.h通过编译生成.dll
5: ?通过2编译所得的.class 调用.dll?
?
详细过程:
?
第一步: 用文本编译器编写HelloWorld.java?
?
class HelloWorld { public native void displayHelloWorld(); static { System.loadLibrary("hello"); } public static void main(String[] args) { new HelloWorld().displayHelloWorld(); } }
?
?
第二步: 通过手动编译将HelloWorld.java 编译成 HelloWorld.class
(如果用Eclipse 什么的 都是可以的,只要能生成就行)
?
?
javac HelloWorld.java
?
运行上述代码有2个条件,首先Java环境变量要配置完成,其次已经定位到.java 所在的文件夹下
?
?
第三步:将HelloWorld.java 编译成 HelloWorld.h
?
?
javah HelloWorld
?
?
第四步:可以选用VC6.0 或者 VS 工具,将.h文件编译产生动态链接库.dll
?
?
这里采用 VC6.0 作为讲解
1. 打开VC6.0 选择新建Win32下,动态链接库工程,如图1.png 附件中
2. 新建一个.cpp文件,输入以下代码:
?
#include <jni.h> #include "HelloWorld.h" #include <stdio.h> JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) { printf("Hello world!\n"); return; }
?
3. 此时还需要2不操作才可以正确编译,形成.dll
(1)关于 jni.h,必须导入java 所在路径包括/jdk/include ?和 ?/jdk/include/win32 ?如图2.png
(2)关于HelloWorld.h, 将前面编译好的.h文件加入到该工程下
?
这样就可以正确编译生成.dll
?
第五步:将生成的.dll 与 .class 放在同一目录下,然后执行
?
java HelloWorld
?
成功 ?(64位系统目前好像不支持) 错误:Can't load IA 32-bit .dll on a AMD 64-bit platform
?
全部文件可见附件。
?
?
?