有人给我发了他的静态库(lib.a)和一个头文件(lib.h),它应该是用C++编写的,我已经使用gcc编译器将静态库(lib.a)转换为共享库(。所以)。现在我想使用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 构建一座桥梁
将 lib.a 与bridge.c链接到libbridge.so中
然后,java可以使用System.loadLibrary("bridge")
来使用它
这里有一些指南 https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html
关于Java - 我有一个库(.a/.so)和 header (.h),如何使用Java调用它们的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034357/