不知何故,我在编译iPhone时设法搞砸了我的XCode项目设置。 链接说
时失败ld: warning: in /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/AddressBook.framework/AddressBook, file is not of required architecture
... (same for the other frameworks).
所以问题是它正在尝试在为iPhone编译时使用模拟器框架。
当你查看实际的链接命令时:
setenv IPHONEOS_DEPLOYMENT_TARGET 3.1
setenv MACOSX_DEPLOYMENT_TARGET 10.5
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk
-L/Users/ben/development/xcode_output/Debug-iphoneos
-F/Users/ben/development/xcode_output/Debug-iphoneos
-F/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/
System/Library/Frameworks
-F/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/
System/Library/Frameworks
您可以看到提供了模拟器框架和iPhone框架路径。 我怎么能改变呢?我没有在设置中的任何地方找到它。
项目设置中的[FRAMEWORK_SEARCH_PATHS, -F]
为空。
问题可能在于静态库中的链接。 该静态库的项目设置包含许多重复设置。 总是有两个相同的设置(例如两个搜索路径块,两个GCC-4.2代码生成块等)。这看起来不正常。
此致
答案 0 :(得分:0)
我设法解决这个问题的唯一方法是创建一个新项目并重新开始: - (
答案 1 :(得分:0)
ld:警告:在/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/AddressBook.framework / AddressBook,文件不是必需的架构...(对于其他框架也是如此)。
您的设备正确吗?不是模拟器? 找到相同的框架,但在设备下。导入时检查整个文件路径。
答案 2 :(得分:0)
检查目标的框架搜索路径。如果Simulator SDK中有明确的路径,请将其删除。
答案 3 :(得分:0)
我认为问题在于我链接的静态库有两个目标用于iPhone和模拟器。我改变了这一点,只有一个目标,似乎已经解决了问题。
此致
本
答案 4 :(得分:0)
我发现当我通过导航到/Developer/platforms/.../Frameworks向我的项目添加框架“旧方式”时,它在目标设置中添加了框架路径搜索列表的完整路径。这意味着我的所有框架都突然被淹没了。确保搜索列表中没有完整路径,您应该能够修复项目而无需创建新项目。
[编辑]在进一步检查中,我看到cdespinoza已经回答了这个问题:)