我正在开发一个 iPad 应用程序,其中包含 2 个第三方静态库。这两个库中的目标文件的名称相同。在构建应用程序时我得到
“Apple Mach -O (id) 错误”
因为这两个库中的目标文件名称相同。
如何解决这个问题呢?
错误看起来像:
ld: duplicate symbol _T_strcpy in /Users/indiait-supportservices/Desktop/untitled folder/Universal/lib/simulator/libSecurIDLib.a(mem.o) and /Users/indiait-supportservices/Library/Developer/Xcode/DerivedData/ReceiverForiOS-aqpprpcivvjjadbsutqqmtjsoczk/Build/Intermediates/ReceiverForiOS.build/Debug-iphonesimulator/myApp iPad.build/Objects-normal/i386/pdcrypte2.o for architecture i386
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-g++-4.2
failed with exit code 1.
您正在为一种架构构建吗?如果您正在构建多个架构并使用-all_load
链接器标志,这会破坏链接器忽略为多个体系结构定义的符号的能力。作为测试,尝试仅针对 armv6 进行构建,看看错误是否消失。
有一篇很好的博文here http://blog.binaryfinery.com/universal-static-library-problem-in-iphone-sd并讨论了类似的问题here https://stackoverflow.com/q/2300867/257550.
最后,您可以添加以下环境变量来调试覆盖类别的问题:OBJC_PRINT_REPLACED_METHODS=YES
。这将记录哪些方法名称已被类别覆盖,以防万一出现问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)