网上有了很多这样的文章,不过感觉并不是很全,我都东找西找才最终把JAVA调用c++给搞定。
下面引用了很多网上已经有的的内容,我在这里只是整合一次,让以后的朋友少走弯路。
多说无益,具体如下:
作者:mykoma
假设所有文件都放在d:/
Step 1:
写JAVA文件
例如程序testdll.java,内容为:
public class testdll {
static{
System.loadLibrary("testdll");
}
public native static int get();
public native static void set(int i);
public static void main(String[] args) {
testdll test = new testdll();
test.set(10);
System.out.println(test.get());
}
}
用javac testdll.java编译它,会生成testdll.class。
再用javah testdll,则会在当前目录下生成testdll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。
Step 2:
根据testdll.h写C++文件testdll.cpp
testdll.cpp内容为:
#include "testdll.h"
int i = 0;
JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass) {
return 2*i;
}
JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint j) {
i = j;
}
Step 3:
生成testdll.dll
这一步需要注意,我最开始也是找了很多资料才弄正确
这里我使用的VS2008,网上有很多利用VC++6.0和VS2005的方法,我就只介绍如何使用VS2008来生成dll文件
“开始”>“Microsoft Visual Studio 2008”>“Visual Studio Tools”>“Visual Studio 2008 命令提示”
这样进入了命令行工具
这里我们需要使用到一个cl命令(D:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe)
进入testdll.h和testdllcpp的文件夹中(命令行),
然后输入
cl -I"C:/Program Files/Java/jdk1.6.0_06/include" -I"C:/Program Files/Java/jdk1.6.0_06/include/win32" -LD testdll.cpp -Fetestdll.dll
那么,就会生成testdll.dll
Step 4:
运行java文件
这里,开始生成的java类文件和testdll.dll都在d:/下面
然后使用java testdll
就会输出 20
结束