参考 http://www.cnblogs.com/AnnieKim/archive/2012/01/01/2309567.html
这片文章说的是 java 通过jni 调用 c 的dll,只不过环境用的是vs 作为我们java界当然喜欢一切开眼的东西了
这里改造成dev-c++这个开源c++ ide 来实现,其实就是工具上的差异
首先写java端不多说,建工程
public class APCluster {
public native int CallAPClusterDll(int data);
static {
System.loadLibrary("APClusterDllMedium");
System.out.println("I m in java");
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
new APCluster().CallAPClusterDll(65535);
}
}
C 端的
#include "APCluster.h"
#include <cstdlib>
#ifdef __cplusplus
extern "C" {
#endif
typedef int* (__stdcall *APCLUSTER32)(double*, unsigned int, bool);
JNIEXPORT jint JNICALL Java_APCluster_CallAPClusterDll(JNIEnv *env, jobject _obj, jint _arg_int)
{
printf("%d",_arg_int);
return 0;
}
#ifdef __cplusplus
}
#endif
重要步骤主要在C端
C 端:
把
%java_home%\include
%java_home%\include\
还有java端生成的 .h 文件的目录 一共三个都加入 c端的包含目录里来
c端主要就这些了
java端,声明完类后
cmd 到javasrc下
编译刚辞那个源文件
重要的步骤是 执行
javah APCluster
这个是生成c用到的头文件
然后把C生成的dll放在 系统路劲下 就是 环境变量 path 任何一个目录下 比如c:\\windows
运行test 试试看!!