【发布时间】:2017-03-22 23:13:44
【问题描述】:
我用 Java 编写了一个程序,该程序调用了本地语言 C 中的一些函数。为该 C 函数文件创建了一个共享库,并创建了一个共享库,一切都运行良好。
我的问题是当我尝试调用其他函数时,例如在 PBC(基于配对的加密)库中。共享库中的 C 文件包括了解 PBC 中的功能所需的 .h 文件,但我无法使用它们,我不知道为什么。我该怎么办?如何调用其他库中的函数?
用于加载库的 Java 代码。
static {
System.loadLibrary("myLibrary");
System.loadLibrary("pbc");
}
执行我自己的 Java 程序时出错:
undefined symbol: pairing_init_set_buf
【问题讨论】:
-
您是否以某种方式(静态或动态)链接 PBC 库?
-
在C程序中我只包含了它们,我还要做别的吗?
-
这取决于:您可以将库静态链接到您的共享库,或者您可以将共享 PBC 库添加到最终应用程序的链接命令中。
-
如何将它们链接到共享的 PBC 库到最终应用程序?以及如何将共享库静态链接到我自己的共享库?
-
切换了它们,仍然是同样的错误。我将尝试使用 dlOpen :s
标签: java c java-native-interface shared-libraries static-libraries