C/C++编译器除了可以创建机器代码可执行文件以外,也可以创建共享库文件。接下来,我将使用Java的JNI来写一个Java本地代码(java native interface). 以windows平台为例,介绍如何创建本地方法。
使用windows平台的编译器,我可以是用的工具:visual studio command prompt工具cl.exe
1. 编写Java代码并编译成字节文件(command: java Happy.java)
public class Happy{
public native void printText ();
static{
System.loadLibrary ("happy"); /* Note lowercase of classname! */
}
public static void main (String[] args){
Happy happy = new Happy ();
happy.printText ();
}
}
2. 生产C语言的头文件,使用Java 提供的工具Javah。
javah Happy
3. 编写
HappyImp.c文件,代码如下:
#include <jni.h> /* Standard native method stuff. */
#include "Happy.h" /* Generated earlier. */
#include <stdio.h> /* Standard C IO stuff. */
void Happy_printText (struct HHappy *this){
puts ("Happy New Year!!!");
}
4. 生产dll文件。在DOS下,输入以下命令:
cl-I"C:\Program Files\Java\jdk1.6.0_35\include" -I"C:\ProgramFiles\Java\jdk1.6.0_35\include\win32" -LD HappyImp.c -FeHappyImp.dll
如果报错,比如“can't open file <stdio.h>”,还有什么不能呢个发现什么LIB文件等。解决方法是执行以下VC的环境设置bat脚本。e.g. D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat
D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat
最好是在DOS环境下执行,可以达到我们的目的。
5. 执行Java代码:
java Happy