cygwin + gcc+makeFile入门(三): JNI的编译

本文提供了一个JNI开发流程的简明教程,包括如何编写包含Native方法的Java类、通过javah生成头文件、编写CPP文件以及如何编译这些文件来创建DLL。文章还详细介绍了Makefile的配置方法,并附带了源代码下载链接。

不想花大力气介绍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 输出, 可以省略

源码下载地址:http://download.youkuaiyun.com/source/1828215

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值