Java中调用dll动态库的简洁方法
发布时间:2010/8/20 10:04:58 来源:城市学习网 编辑:ziteng
解压JNative-1.3.2.zip 获得三个文件,分别是:JNativeCpp.dll,libJNativeCpp.so,JNative.jar 。JNativeCpp.dll Windows下用的,拷到windows / system32目录下;
libJNativeCpp.so Linux下使用的;
JNative.jar 这是一个扩展包,加载到你的程序中就可以。
一个简单例子
n = new JNative("User32.dll", "MessageBoxA"); //“.dll”不用也可以, 常量DLL_NAME的值为
// 构造JNative时完成装载User32.dll,并且定位MessageBoxA方法
n.setRetVal(Type.INT); // 指定返回参数的类型
n.setParameter(i++, Type.INT, "" + buttons); // 指定位置上的参数类型和值
n.invoke(); // 调用方法
} // 记得释放
JNativeTest.messageBox(100,"这是使用jnative练习
关于linux下编译 C代码部分说明:
对于linux不同版本,可能会导致libJNativeCpp.so不同
原带的libJNativeCpp.so 是在glic2.4下编译的
为了适应glic2.3的情况,重新编译了libJNativeCpp.so,在for gcc3.4.6 glibc 2.3下。
编译办法:
在JNative-1.3.2-src\JNativeCpp\Release目录下
1、备份calls.o和 asm_io.o这两个Object文件
2、
3、恢复到当前目录calls.o和 asm_io.o这两个Object文件
4、
目前已经修改了Release目录下的makefile和subdir.mk文件,使得在make clean的时候不删除calls.o和 asm_io.o两个文件