C语言经久不衰的原因自是有的,其开发人员、已有程序及质量都是值得学习借鉴的,为了不用重复开发,可以用java直接调用c程序是很有必要的
具体实例如下
1.写一个java类
public class test1{
public native int add(int a,int b); //注意native的添加,add具体实现有c完成
static{
System.loadLibrary("test1"); //加载c语言动态库,生成方法在下
}
public static void main(String[] args){
new test1().add(1,2); //实例化方法
}
}
2.于当前目录下编译程序,生成class类:
3.生成.h文件,注意这里有一些区别:
1)当你安装jdk的时候配置了path及classpath的情况下,直接运行javah test1即可生成;
2)若没有配置,则需运行命令如下:
4.下面打开vc生成动态库,新建动态库如下:
5.在当前工程下,分别建立.h和.cpp文件
6.将之前生成的.h文件所有内容copy当前.h文件下面;且在.cpp文件中实现头文件函数的如下:
#include "test1.h"
#include <jni.h>
JNIEXPORT jint JNICALL Java_test1_add
(JNIEnv *, jobject, jint a, jint b){
return a+b;
}
7.在jdk的安装目录~\jdk1.6.0_25\include下将jni.h和~\jdk1.6.0_25\include\win32下的jni_md.h文件复制到Visual C++ 6.0的D:\Microsoft Visual Studio\VC98\Include目录下;
8.此时编译程序,即可生成动态链接库,注意在工程下的debug内:
9.将此动态库复制到java工程下,调用执行即可完成c函数的功能: