我一直在寻找解决问题的方法,只是得到了一些线索,但我找不到任何一致的解决方案:我有一个动态库 (libdyna.so) 的代码,它使用 3 个静态库 (libone.so) 的功能。 a、libtwo.a、libthree.a) 和 log4cpp 库。当我第一次构建它时一切看起来都很好,我可以制作'libdyna.so',但是当你用我的java测试程序通过一个包装器(jni包装器工作正常)测试它时,我得到了很多未定义的引用。
然后我将“-z defs”标志放到make文件中,出现了很多未定义的引用,我无法再次编译动态库。
我用三个静态库创建了“nm”命令,它正确导出了我在动态库中使用的所有函数。但是当我在包含 3 个静态库的“libdyna.so”上创建 nm 时,我发现了未定义的符号(函数)。
我认为解决方案必须类似于在我想制作动态链接器时向链接器添加一些标志,但我真的不知道。谁能帮助我,或者告诉我一些想法?如果需要一些代码,请告诉我,我会在这里粘贴。非常感谢。
P/D:对不起我的英语不好。