JAVA用JNI方法调用C代码实现HelloWorld(含windows及ubuntu两种操作系统环境下的操作)

一、首先是java运行环境的搭建,到官网下载java jdk安装即可(注意要修改环境变量)。还可以顺便安装eclipse。

二、编写java代码,文件名HelloWorld.java

public class HelloWorld {
	
	public native void displayHelloWorld();

	public static void main(String[] args) {
		HelloWorld hw = new HelloWorld();
		hw.displayHelloWorld();
	}
	
	static{
		System.loadLibrary("hello");
	}
}
三、编译: javac HelloWorld.java (生成.class文件)

javah HelloWorld(生成.h文件)

将HelloWorld.h中的#include <jni.h>改成#include “jni.h”。否则vc生成dll编译的时候可能产生问题。

四、编写C代码。文件名HelloWorld.c

#include "jni.h"
#include "HelloWorld.h"
#include <stdio.h>

JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject this)
{
	printf(" hello 2340");
	return;
}
在命令行下执行cl HelloWorld.c -Fehello.dll -MD -LD

即可生成hello.dll
五、运行程序:java HelloWorld


六、以上为windows下的操作。

ubuntu下,第四步的编译命令为: gcc -shared -I /usr/lib/jvm/java-7-openjdk.i386/include HelloWorld.c -o libhello.so   (由于使用的是openjdk,所以-I后的路径如上);

第五步运行程序时,java -Djava.library.path=. HelloWorld



对gcc命令的一些说明:

-c表示只编译(compile),而不连接;
-o选项用于说明输出(output)文件名,gcc将生成一个目标(object)文件;
-fPIC选项。PIC指Position Independent Code。共享库要求有此选项,以便实现动态连接(dynamic linking)。
-shared表示生成一个共享库;
-I选项提供额外的搜索路径.对于#include "...",编译器会在当前路径搜索.h文件,这时可使用-I;
-l选项说明库文件的名字,
-L选项说明库文件所在的路径;如果没有提供-L选项,gcc将在默认库文件搜索路径中寻找。


参考链接:http://blog.csdn.net/mingjava/article/details/180946

http://www.cnblogs.com/BloodAndBone/archive/2010/12/16/1908509.html

http://blog.csdn.net/fengqiaoyebo2008/article/details/6210499

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值