Java - 我有一个库(.a/.so)和header(.h),如何使用Java调用它们的函数?
Java - I've got a library(.a/.so) and header(.h), how to use Java call their functions?
有人给我发了他的静态库(lib.a)和一个头文件(lib.h)。它应该用C++编写,我用gcc编译器将静态库(lib.a)转换为共享库(.so)。现在我想用Java调用库来使用它的函数。
我试过System.load和System.loadLibrary,但我不知道如何调用它的函数。例如,我看到有一个函数从头文件中调用MoveFront(int),它将返回状态的整数。
extern int MoveFront(int);
有办法做到这一点吗?非常感谢。
我使用的是Ubuntu 13.10,JDK 1.8.0_20,gcc 4.6.3。
您不能在Java 中直接调用它们
你必须使用JNI 建造一座桥梁
将带有bridge.c的lib.a链接到libbridge.so然后,java可以使用System.loadLibrary("bridge")
来使用它
这里有导游https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html
相关文章:
- 在这种情况下,java对象是否可以调用本机函数
- 如何从 Java 调用C++函数?
- getItself函数在 java与C++
- 无法使用 JNI 从C++模块成功调用 Java 函数
- Java函数在C++中具有任意数量的参数
- 如何使JNI RegisterNatives调用Java函数具有C++实例范围
- 如何将 java 函数指针传递给 c++ 本机代码
- jvm在尝试将TCHAR类型发送到接受字符串作为参数的java函数时崩溃
- awk 一个完整的 C/C++/Java 函数
- 从Qt C++调用Java函数
- Android NDK:从C++调用Java函数
- 静态 c++ 对象中的 JNI 环境指针并调用连续两次使用字符串参数的 Java 函数会使 JVM 崩溃
- Java 函数中静态常量字符* 的等效性
- 通过JNI从Android上的C++调用Java函数
- 从C++方法调用Java函数
- c++到Java -函数指针
- 使用 std::map<:string, std::string, std::string> c++ 调用 Java 函数<String, String>
- 在Qt上使用java函数
- 从 C++ 调用 Java 函数 (JNI) 根本不起作用
- 如何从Python 2.7中调用c++和或Java函数