0xR*_*0xR 2 java java-native-interface dlopen
我有一个Java应用程序,它使用JNI与本机代码交互.本机代码在运行时编译文件,并尝试使用dlopen调用加载此文件.此调用失败,我收到警告
Could not load library (x):(x) undefined symbol: y
但是,当我有一个通过JNI启动JVM的本机应用程序运行相同的代码时,不会发生此错误,并且它会按预期运行.我怀疑Java正在做一些奇特的事情,导致已加载的库对于使用dlopen加载的库是不可见的.
我这样做是为了诊断问题:
objdumpgdb(通过eclipse - 库列在模块窗格中)我一直试图解决这个问题,但我无法弄清楚发生了什么.特别是因为从本机应用程序加载JVM时它确实有效.
先感谢您!
我终于找到了答案.解决方案是重新编译包含-Wl,--export-dynamic链接器标志未找到的符号的共享库.
有趣的是,我没有自己编写该共享库,我希望默认编译添加标志,因为软件需要它才能正常运行.
无论哪种方式,它都是一个开源项目,所以我可以使用适当的标志集编译它.
| 归档时间: |
|
| 查看次数: |
1858 次 |
| 最近记录: |