Java JNI和Vala - 未定义的符号:g_once_init_enter

时间:2014-03-04 14:49:30

标签: java c java-native-interface glib vala

我写了一个很小的Vala类,编译成C代码,生成JNI头和实现来调用Vala / CCode。

所以最后我有两个头文件和两个实现文件,我用gcc编译成一个JNI库。它编译得很好并导致库。

当我运行Java应用程序(包括此库)时,我在lib中获得symbol lookup error

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

因此,JNI C代码调用调用glib内容的Vala C代码。 Java似乎找不到glib部分。

任何人都知道,该怎么做?

1 个答案:

答案 0 :(得分:2)

这似乎是达斯·乔特(Das Jott)的代码生成生成编译器命令行以生成C文件的问题,并且此问题已修复in this commit。似乎他们试图使用exec()执行bash样式的shell脚本,这导致pkg-config的{​​{1}}标志从未进入链接器命令行。

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