LINUX 下 JNA 调用 so--正确版
来源:互联网 发布:c语言数字字符是什么 编辑:程序博客网 时间:2024/05/17 10:40
项目中需要用到JAVA调用c++,了解过JNI,但比较复杂,后来看到JNA(JNI的加强版)。
网上看了很多例子,但是始终出错,主要错误原因是undefined symbol,找不到c++ 方法。
教程的有些细节没说(- -||),好吧,我把成功的例子贴一下吧。
1.编写C++ so库
c++代码:注意加上extern “C”,否则无法找到c++方法。
#include <stdlib.h>#include <iostream>using namespace std;extern "C"{ void test() { cout << "TEST" << endl; } int addTest(int a,int b) { int c = a + b ; return c ; } }
编译so:g++ -fpic -shared -o libtest.so test.cpp
我把so文件放到了 /lib 下。
2.JAVA代码
import com.sun.jna.Library;import com.sun.jna.Native;public class jnatest1 {// 继承Library,用于加载库文件public interface Clibrary extends Library {// 加载libhello.so链接库Clibrary INSTANTCE = (Clibrary) Native.loadLibrary("hello",Clibrary.class);// 此方法为链接库中的方法void test();int addTest(int a,int b); }public static void main(String[] args) {// 调用Clibrary.INSTANTCE.test(); int c = Clibrary.INSTANTCE.addTest(10,20); System.out.println(c); }}
0 0
- LINUX 下 JNA 调用 so--正确版
- Linux下JNA 调用 so 库
- Linux下JNA 调用 so 库
- Linux下JNA 调用 so 库
- linux jna调用so动态库
- JAVA JNA 调用 .so
- jna调用so例子
- ubuntu下 jna调用so动态链接库
- windows/linux + java + jna + dll/so 调用C/C++
- JNA(JAVA调用lib/so)
- java通过 JNA调用 so
- JNA调用C动态库dll、so
- windows和linux下,用jna调用C++库
- Linux下调用so库
- linux下qt调用.so
- Java框架JNA调用C方法(windows链接库dll文件、linux链接库so文件)
- Centos中用jna调用.so文件详细过程(.so文件嵌套调用.so文件)
- JNA框架之JNI(JAVA调用DLL/SO库)
- 2013.03.16 ie8 不支持str.trim()的写法
- 不容易系列之(3)—— LELE的RPG难题 2045
- 字符串中最长的数字串
- 素数环
- upper_bound()返回值
- LINUX 下 JNA 调用 so--正确版
- [模拟]uva993 Product of digits
- 从 Yarn 回滚到 Hadoop 1.x
- Oracle事务的ACID特性
- STM32学习笔记:通用定时器基本设定
- dundas legend checkbox
- 字符驱动程序框架
- 黑马程序员_多线程(二)
- Unbuntu下安装Go环境