Java JNI 和 Vala - undefined symbol : g_once_init_enter

标签 java c java-native-interface glib vala

我编写了一个很小的 ​​Vala 类,将其编译为 C 代码,生成 JNI header 和实现以从中调用 Vala/CCode。

所以最后我有两个头文件和两个实现文件,我用 gcc 将它们编译成 JNI 库。它可以很好地编译并生成一个库。

当我运行 Java 应用程序(包括此库)时,我在库中遇到符号查找错误

有趣的部分是:undefined symbol: g_once_init_enter - 它不在我的代码中,而是在 glib 代码中,由 valac 生成。

所以,JNI C 代码调用 Vala C 代码,而 Vala C 代码调用 glib 东西。 Java 似乎找不到 glib 部分。

任何人有任何想法,在这里做什么?

最佳答案

这似乎是 Das Jott 生成编译器命令行以生成 C 文件的代码的问题,并且已修复 in this commit .看起来他们正在尝试使用 exec() 执行 bash 样式的 shell 脚本,这导致 glib-2.0pkg-config 标志> 永远不要进入链接器命令行。

tl;dr:正如 Samhain 所说,根本问题是无法链接到 glib-2.0

关于Java JNI 和 Vala - undefined symbol : g_once_init_enter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22175183/

相关文章:

java - GWT - CellTable 可排序列不会响应点击

c - 以下声明的大小是多少?

c - SPOJ Prime Generator 的 C 代码有什么问题?

java-native-interface - jni 传递类对象作为参数

java - JNI - 来自 C++ 的免费 ByteBuffer

java - 引用变量的更新

java - RabbitMQ:在 Node.js 中发布,在 Java 中订阅

java从文件读取行时遇到问题

c - C连接值重新分配中的TCP/IP

java - 加载 JNI 库时,映射如何与实际库名称发生