iOS C语言同名方法处理

项目中导入2个静态库SA和SB,其中SA库代码如下:

image.png

SB库代码如下:


image.png

此时mach-o文件中的符号如下:


image.png

只有一个用T修饰的_testc。

程序运行起来结果是啥呢?

打印
image.png

相当于一个testc的方法没有被链接进mach-o文件。

如果要把2个同名c方法都链接进来可以加上-all_load标志,但是编译会报错:duplicate symbol '_testc' in。
意思就是有2个同名符号。

此时mach-o文件中的符号如下:


image.png

发现有2个_testc符号了,但是是用t修饰的。

那2个不同的库一定要有同名c方法咋办呢?

可以修改代码如下:


image.png

加上static修饰符就行了,此时可以打印sa和sb了。

c语言static修饰函数请参考:https://www.cnblogs.com/XiaoXiaoShuai-/p/12008646.html

关于nm命令查看符合,t和T代表的含义可以查看:https://www.mkssoftware.com/docs/man1/nm.1.asp

image.png

你可能感兴趣的:(iOS C语言同名方法处理)