Java 调用原生动态链接库的技术汇总
2014-07-11 08:12
260 查看
Java 调用原生动态链接库,在windows上即为调用 *.dll ,在 *nix 系统上即为调用 lib*.so 。
本篇不讨论 com xpcom 等技术。
JNI
需要编写java native methods,写对应的C代码函数,编译成中间的dll,调用目标dll,jvm原生支持,不需其他库
可以用 gluegen swig 生成C代码
JNA
jna 编写java interface ,同名映射到dll中函数,参数与返回值用 StringBuffer <--->char* 之类默认对应关系
需要 jna 的 jar 与 dll 支持(dll可以在jar中自动解压后加载)
bridj 基于 jna,Pointer<Byte> <---> char*,贴近C底层,Java方调用较不方便。
需要 bridj 的 jar 与 dll 支持(dll可以在jar中自动解压后加载)
可以用 jnagenerator 根据对应的 *.h 来生成 java interface
JNative
使用 dll 的函数名直接调用,有默认对应关系, 自己处理参数与返回值
推荐使用 JNAGenerator 来生成 JNA Interface ,然后在Java 中使用。
本篇不讨论 com xpcom 等技术。
JNI
需要编写java native methods,写对应的C代码函数,编译成中间的dll,调用目标dll,jvm原生支持,不需其他库
可以用 gluegen swig 生成C代码
JNA
jna 编写java interface ,同名映射到dll中函数,参数与返回值用 StringBuffer <--->char* 之类默认对应关系
需要 jna 的 jar 与 dll 支持(dll可以在jar中自动解压后加载)
bridj 基于 jna,Pointer<Byte> <---> char*,贴近C底层,Java方调用较不方便。
需要 bridj 的 jar 与 dll 支持(dll可以在jar中自动解压后加载)
可以用 jnagenerator 根据对应的 *.h 来生成 java interface
JNative
使用 dll 的函数名直接调用,有默认对应关系, 自己处理参数与返回值
JNative GetActiveWindow = new JNative(DLL_NAME, "GetActiveWindow"); GetActiveWindow.setRetVal(Type.INT); GetActiveWindow.invoke(); HWND handle = new HWND(GetActiveWindow.getRetValAsInt()); GetActiveWindow.dispose(); return handle;
推荐使用 JNAGenerator 来生成 JNA Interface ,然后在Java 中使用。
相关文章推荐
- JNI技术之Java调用C/C++编写的第三方dll-动态链接库
- Ubuntu Feisty 下开发 JNI 应用步骤 (Java调用C/C++的技术)
- 基本JNI调用技术(c/c++与java互调)
- Java调用c/c++动态链接库
- 浅谈JNI的使用-java调用动态链接库
- 国外java、IT技术网站汇总
- .net反射技术的应用—如何调用Java的COM接口
- 使用LS2J技术在LotusScript中来调用Java[转]
- java 调用C++ 动态链接库
- 使用JNI技术实现JAVA程序调用dll
- 使用JNI技术实现JAVA程序调用dll
- 常用Java技术名词解释汇总
- JNI技术实践(1) Java调用C/C++代码
- 用JNI技术Java调用dll文件(由lib文件生成)
- 各公司技术面试题汇总(Java,.NET,C,C++,SQL,PHP)不断更新中……
- .net反射技术的应用—如何调用Java的COM接口[转]
- Java调用c++动态链接库(一) JNative 开发环境的搭建
- 使用JNI技术实现JAVA程序调用dll
- [转]Java调用DLL动态链接库的方案:JNI, Jawin, Jacob.
- linux下 java JNI调用C语言动态链接库