代码之家  ›  专栏  ›  技术社区  ›  Ben

为iphone编译时无法链接xcode

  •  0
  • Ben  · 技术社区  · 15 年前

    不知怎的,我在为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编译时试图使用模拟器框架。

    当您查看实际的link命令时:

    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代码生成块等)。

    当做

    5 回复  |  直到 13 年前
        1
  •  0
  •   Ben    15 年前

    我设法解决这个问题的唯一办法是创建一个新项目,然后重新开始:

        2
  •  0
  •   fearmint    15 年前

    ld:警告:in/developer/platforms/ iphonesimulator.platform平台 /开发人员/SDK/ iphonesimulator3.0.sdk开发包 /system/library/frameworks/addressbook.framework/addressbook,文件不是必需的体系结构…(其他框架也一样)。

    你的设备大楼对吧?不是模拟器? 找到相同的框架,但在设备下。导入时检查整个文件路径。

        3
  •  0
  •   cdespinosa Martin Cote    15 年前

    检查目标的框架搜索路径。如果有指向模拟器sdk的显式路径,请将其删除。

        4
  •  0
  •   Ben    15 年前

    我认为问题是我连接的静态库有两个目标,iPhone和模拟器。我已经改变了,所以只有一个目标,似乎解决了这个问题。

    当做

        5
  •  0
  •   Adam    15 年前

    当我通过导航到/developer/platforms/../frameworks将一个框架添加到我的项目中时,我发现它将完整路径添加到了我的目标设置中的框架路径搜索列表中。这意味着我所有的框架都突然被破坏了。确保搜索列表中没有完整路径,并且您应该能够修复项目而不必创建新路径。

    [编辑]和进一步的检查,我看到这个问题已经回答了CdSpNooZa: