如何在其中包含与 OBJECT 文件具有相同名称的静态库?

Mic*_*eal 5 iphone objective-c ipad xcode4

我正在开发一个 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.
Run Code Online (Sandbox Code Playgroud)

mem*_*ons 0

您正在为一种架构构建吗?如果您正在针对多个体系结构进行构建并使用-all_load链接器标志,则这会破坏链接器忽略为多个体系结构定义的符号的能力。作为测试,尝试仅针对 armv6 进行构建,看看错误是否消失。

这里有一篇很好的博客文章,这里讨论了类似的问题。

最后,您可以添加以下环境变量来调试覆盖类别的问题: OBJC_PRINT_REPLACED_METHODS=YES。这将记录哪些方法名称已被类别覆盖,以防万一出现问题。