一、首先是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