在使用静态库时出现重定义问题,不能控制静态库的生成,记录在这种情况下的处理。
multiple definition
出现重定义时,如果源码可控,这种情况下简单,修改源码即可。
当源码不可控时,需要考虑其他办法来处理这种问题。
- 直接修改
- 逆向工程
直接修改
使用 UE 打开存在重定义的 .a 文件,将相关的重定义符号修改为其他名字,必须保证修改前后长度一致!
逆向工程
nm查看库文件
nm -a libtest.a解压静态库文件
ar -x libtest.a
此时当前目录存在 .o 文件
反汇编
objdump -D test.o > test.m修改之后打包
ar -rcs libtest.a *.otips
查看库文件有那些目标文件
ar -t libtest.a查看库文件索引表
ar -s libtest.a