参考资料
http://www.iteye.com/topic/356188
http://www.iteye.com/topic/459005
http://www.iteye.com/topic/304594
http://www.iteye.com/topic/295776
Step1: 建立Java代码 注意这里是不带包名, 带包名的话, 使用javah会有些不同
Step2:用命令行的方式编译并生成头文件 Demo.h
javac Demo.java
javah Demo
Step3: 在VS2008中新建Demo的DLL项目, 将Demo.h拷贝到Header Files下, 注意: 需要同时拷贝到项目和文件目录下。
Step4: 准备VS2008环境, 将JDK下include的h文件放到
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include
不然会编译报错。
Step5: 编辑cpp文件
这里的 Java_Demo_add 和 Demo.h中的一致
Step6: 生成dll文件,拷贝到java目录下, 运行java Demo. 只能用命令行的方式运行, 不能用eclipse来玩。
大功告成
[color=red]但是这里传递的只是int, 能否传递集合,或是自定义的Bean呢?[/color]
http://www.iteye.com/topic/356188
http://www.iteye.com/topic/459005
http://www.iteye.com/topic/304594
http://www.iteye.com/topic/295776
Step1: 建立Java代码 注意这里是不带包名, 带包名的话, 使用javah会有些不同
public class Demo {
static
{
System.loadLibrary("demo");
}
public native static int add(int a,int b);
public static void main(String[] args) {
System.out.println(add(7,2));
}
}
Step2:用命令行的方式编译并生成头文件 Demo.h
javac Demo.java
javah Demo
Step3: 在VS2008中新建Demo的DLL项目, 将Demo.h拷贝到Header Files下, 注意: 需要同时拷贝到项目和文件目录下。
Step4: 准备VS2008环境, 将JDK下include的h文件放到
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include
不然会编译报错。
Step5: 编辑cpp文件
int add(int a,int b){
return a+b;
}
JNIEXPORT jint JNICALL Java_Demo_add
(JNIEnv *env,jclass jobject,jint a,jint b){
return add(a,b);
}
这里的 Java_Demo_add 和 Demo.h中的一致
Step6: 生成dll文件,拷贝到java目录下, 运行java Demo. 只能用命令行的方式运行, 不能用eclipse来玩。
大功告成
[color=red]但是这里传递的只是int, 能否传递集合,或是自定义的Bean呢?[/color]