Java调用c程序动态库详细案例

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类:
Java调用c程序动态库详细案例_第1张图片
3.生成.h文件,注意这里有一些区别:
1)当你安装jdk的时候配置了path及classpath的情况下,直接运行javah test1即可生成;

2)若没有配置,则需运行命令如下:
Java调用c程序动态库详细案例_第2张图片
4.下面打开vc生成动态库,新建动态库如下:
Java调用c程序动态库详细案例_第3张图片
5.在当前工程下,分别建立.h和.cpp文件
Java调用c程序动态库详细案例_第4张图片
6.将之前生成的.h文件所有内容copy当前.h文件下面;且在.cpp文件中实现头文件函数的如下:

#include "test1.h"
#include 
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内:
Java调用c程序动态库详细案例_第5张图片
9.将此动态库复制到java工程下,调用执行即可完成c函数的功能:
Java调用c程序动态库详细案例_第6张图片

你可能感兴趣的:(java,cos)