我想将一个静态库合并(包含)到另一个静态库。
当我在 Windows 上尝试时,它有效。
在 Linux 上,该对象不包含在新创建的库中。查看创建的库内部,您会发现函数名称,但未定义为“U”。
需要什么样的标志来强制将对象包含在新创建的库中?
nm -g libPPCL.a | grep "pathLib"
U _Z12CheckpathLibRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
0000000000000000 T _Z15CallpathLibFuncRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
函数是 CallpathLibFunc ,库的名称为 pathLib ,应该位于 PPCL.a 中
将第三方库加入到我自己的库中
注:
我使用 premake5 生成 makefile 和 VS2022 解决方案。
我找到了解决方案。 查看我描述解决方案的模板项目。
https://github.com/MariwanJ/TemplatePreemakeStaticLIB 这个想法是提取 .o 文件并将它们再次添加到 .lib 中。这必须在头库的 lua 文件内完成(您想将供应商库引入其中)。 如果需要,请检查解决方案并进行测试。