我写了一个很小的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部分。
任何人都知道,该怎么做?
答案 0 :(得分:2)
这似乎是达斯·乔特(Das Jott)的代码生成生成编译器命令行以生成C文件的问题,并且此问题已修复in this commit。似乎他们试图使用exec()
执行bash样式的shell脚本,这导致pkg-config
的{{1}}标志从未进入链接器命令行。
tl; dr:正如Samhain所说,根本问题是无法与glib-2.0
链接。