Java - 我有一个库(.a/.so)和header(.h),如何使用Java调用它们的函数?

Java - I've got a library(.a/.so) and header(.h), how to use Java call their functions?

本文关键字:Java 函数 何使用 调用 有一个 header so      更新时间:2023-10-16

有人给我发了他的静态库(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