基本上,问题是这个。我有一个Java程序,我从中加载了一个JNI库。该JNI库是否可以链接到HotSpot的libjvm.so
共享库,并因此调用HotSpot独有的函数 - 即jni.h
之外的函数?
当我尝试以简单的方式执行此操作时,结果是程序崩溃:
java: symbol lookup error: /path/to/libtest.so: undefined symbol: _ZNK7oopDesc5klassEv
这会导致无法加载,因为它无法解析HotSpot独有的oopDesc类。有关生成可以这种方式链接的库的建议吗?
编辑:尝试在编译时链接到libjava.so
但没有成功。
答案 0 :(得分:0)
如果要加载的libjvm.so与java EXE隐式链接的libjvm.so不同,那么这不会起作用,因为它们会发生冲突,除非你做这样的事情{{3}或那trick。 java EXE是否加载了您的库想要引用的libjvm.so?你应该能够告诉我们{(3}}所描述的java EXE加载哪个.so。
如果java EXE和你的库都想要相同的.so并且仍然无法正常工作,我不知道该说些什么。