美文网首页
iOS C语言同名方法处理

iOS C语言同名方法处理

作者: BossMoney | 来源:发表于2022-01-19 22:26 被阅读0次

    项目中导入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语言同名方法处理

          本文链接:https://www.haomeiwen.com/subject/resdhrtx.html