不想花大力气介绍JNI,所以这部分需要你自己去查阅入门资料:
1. 写包含Native方法的Java类
2. 编译上述java类,并通过javah生成.h头文件
3. 根据头文件写CPP
4. 编译.h + .cpp文件
首先学习一下设置环境变量:
1. 引用环境变量, 用美元符号 $PATH
2. 设置环境变量, export helloworld=abc; 别带空格
3. 彻底修改环境变量, 编辑etc/profile文件
但是在MakeFile文件中,最好别动用设置环境变量这项工作,有时候不起作用(原因未知), 在提供的源代码下载链接中,makefile文件
设置了环境变量, 可能导致无法编译; 所以我们寻求第二套方案:
name=abcXXX
然后引用的时候,采用$(name)
makefile 源文件如下(替换下载源代码中的链接):
#编译JNI的DLL #参考: http://www.inonit.com/cygwin/jni/helloWorld/c.html #注意引用环境变量的方式, 需要加括号, 在Shell下可以不加, 但Makefile必须加 #-mno-cygwin 必须填 #-I表示引入头文件位置 #-Wl,--add-stdcall-alias 为了防止出现UnsatisfiedLinkError #设置的全局变量用$(JAVA_HOME) JAVA_HOME=/cygdrive/d/software/jdk1.6.0_01 final:JAVAHOME clear gcc -mno-cygwin -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/win32 -Wl,--add-stdcall-alias -shared -o hello.dll helloWorld.c clear: rm -f hello.dll
源代码使用:
java文件夹生成Native方法所在的class文件以及javah过后的头文件
HelloWorld.java文件存在本地方法,经过JavaH后需要生成.h文件.协助生成dll.
MainCygwin.java将调用HelloWorld.java中的静态方法.
c文件夹生成JNI 的DLL 具体看Makefile文件的说明, 仅有的几个gcc的开关,熟悉一下就会了,
并不难:
-c编译
-shared 生成动态库
-o 输出, 可以省略
本文提供了一个JNI开发流程的简明教程,包括如何编写包含Native方法的Java类、通过javah生成头文件、编写CPP文件以及如何编译这些文件来创建DLL。文章还详细介绍了Makefile的配置方法,并附带了源代码下载链接。
141

被折叠的 条评论
为什么被折叠?



