JAVA调用DLL备忘 Eclipse 和DEV-C++环境
?参考?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 试试看!!
?
?
?