代码之家  ›  专栏  ›  技术社区  ›  2snacc

静态库依赖在Xcode 3.2.3上的模拟器中编译,在设备上失败

  •  2
  • 2snacc  · 技术社区  · 16 年前

    我有一个静态库,Compton,它本身依赖于three20。我将康普顿构建为它所支持的客户端应用程序的依赖关系。

    当我使用3.2或4.0SDK模拟器编译一个引用康普顿的客户端应用程序,目标是3.2上的iPhone或iPhone/iPad时,一切都很正常,没有编译错误,应用程序在模拟器中按预期运行。

    然而,当我编译完全相同的项目时,除了从模拟器到设备的构建设置外,什么都没有改变,我得到了下面的链接错误,在几个小时的混乱之后,我似乎无法消除这些错误 #import 语句、搜索路径、构建设置等等。我真正感到沮丧的是,模拟器版本正在构建和运行良好,这似乎是一个很小的配置问题。我正在粘贴下面的错误,从以设备模式构建项目的角度来看,康普顿类似乎无法“看到”三个20头中的一些。

    我用的是320的后备箱版本,今天拉的。

    以下是链接错误的输出:

    Ld build/NewBlankComptonTemplate.build/Debug-iphoneos/NewBlankComptonTemplate.build/Objects-normal/armv7/NewBlankComptonTemplate normal armv7
    cd /Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate
    setenv IPHONEOS_DEPLOYMENT_TARGET 4.0
    setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -L/Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/Debug-iphoneos -F/Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/Debug-iphoneos -filelist /Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/NewBlankComptonTemplate.build/Debug-iphoneos/NewBlankComptonTemplate.build/Objects-normal/armv7/NewBlankComptonTemplate.LinkFileList -dead_strip -ObjC -miphoneos-version-min=4.0 -framework Foundation -framework UIKit -framework CoreGraphics -framework AudioToolbox -framework AVFoundation -framework CFNetwork -framework MediaPlayer -framework MessageUI -framework MobileCoreServices -framework QuartzCore -framework StoreKit -framework SystemConfiguration -lxml2 -lz.1.2.3 /Users/wiley/iphone_projects/ComptonQuizzes/libs/Compton/src/build/Debug-iphoneos/libCompton.a -o /Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/NewBlankComptonTemplate.build/Debug-iphoneos/NewBlankComptonTemplate.build/Objects-normal/armv7/NewBlankComptonTemplate
    
    Undefined symbols:
      "_OBJC_CLASS_$_TTStyleSheet", referenced from:
          objc-class-ref-to-TTStyleSheet in AppDelegate.o
      "_OBJC_CLASS_$_TTURLAction", referenced from:
          objc-class-ref-to-TTURLAction in AppDelegate.o
      "_OBJC_CLASS_$_TTRoundedRectangleShape", referenced from:
          objc-class-ref-to-TTRoundedRectangleShape in libCompton.a(ComptonStyleSheet.o)
      "_OBJC_METACLASS_$_TTDefaultStyleSheet", referenced from:
          _OBJC_METACLASS_$_ComptonStyleSheet in libCompton.a(ComptonStyleSheet.o)
      "_OBJC_CLASS_$_TTView", referenced from:
          objc-class-ref-to-TTView in libCompton.a(ComptonQuizStartController.o)
      "_OBJC_CLASS_$_TTShapeStyle", referenced from:
          objc-class-ref-to-TTShapeStyle in libCompton.a(ComptonQuizStartController.o)
      "_OBJC_CLASS_$_TTInnerShadowStyle", referenced from:
          objc-class-ref-to-TTInnerShadowStyle in libCompton.a(ComptonQuizStartController.o)
      "_OBJC_METACLASS_$_TTViewController", referenced from:
          _OBJC_METACLASS_$_ComptonFeedbackController in libCompton.a(ComptonFeedbackController.o)
          _OBJC_METACLASS_$_ComptonCatalogController in libCompton.a(ComptonCatalogController.o)
          _OBJC_METACLASS_$_ComptonQuizStartController in libCompton.a(ComptonQuizStartController.o)
          _OBJC_METACLASS_$_PILAppAdViewController in libCompton.a(PILAppAdViewController.o)
          _OBJC_METACLASS_$_ComptonQuizController in libCompton.a(ComptonQuizController.o)
      "_OBJC_CLASS_$_TTURLCache", referenced from:
          objc-class-ref-to-TTURLCache in libCompton.a(ComptonFeedbackController.o)
      "_OBJC_CLASS_$_TTSolidBorderStyle", referenced from:
          objc-class-ref-to-TTSolidBorderStyle in libCompton.a(ComptonQuizStartController.o)
      "_OBJC_CLASS_$_TTViewController", referenced from:
          _OBJC_CLASS_$_ComptonFeedbackController in libCompton.a(ComptonFeedbackController.o)
          _OBJC_CLASS_$_ComptonCatalogController in libCompton.a(ComptonCatalogController.o)
          _OBJC_CLASS_$_ComptonQuizStartController in libCompton.a(ComptonQuizStartController.o)
          _OBJC_CLASS_$_PILAppAdViewController in libCompton.a(PILAppAdViewController.o)
          _OBJC_CLASS_$_ComptonQuizController in libCompton.a(ComptonQuizController.o)
      "_OBJC_CLASS_$_TTNavigator", referenced from:
          objc-class-ref-to-TTNavigator in AppDelegate.o
      "_OBJC_CLASS_$_TTPostController", referenced from:
          objc-class-ref-to-TTPostController in libCompton.a(ComptonFeedbackController.o)
      "_OBJC_CLASS_$_TTRoundedRightArrowShape", referenced from:
          objc-class-ref-to-TTRoundedRightArrowShape in libCompton.a(ComptonStyleSheet.o)
      "_OBJC_CLASS_$_TTButton", referenced from:
          objc-class-ref-to-TTButton in libCompton.a(ComptonFeedbackController.o)
      "_OBJC_CLASS_$_TTSolidFillStyle", referenced from:
          objc-class-ref-to-TTSolidFillStyle in libCompton.a(ComptonQuizStartController.o)
      "_OBJC_CLASS_$_TTWebController", referenced from:
          objc-class-ref-to-TTWebController in AppDelegate.o
      "_TTScreenBounds", referenced from:
          -[ComptonCatalogController viewDidLoad] in libCompton.a(ComptonCatalogController.o)
          -[PILAppAdViewController viewDidLoad] in libCompton.a(PILAppAdViewController.o)
      "_OBJC_CLASS_$_TTDefaultStyleSheet", referenced from:
          _OBJC_CLASS_$_ComptonStyleSheet in libCompton.a(ComptonStyleSheet.o)
    ld: symbol(s) not found
    collect2: ld returned 1 exit status
    

    有人能帮我找出这里出了什么问题吗?

    更新: process described here

    更新2:

    2 回复  |  直到 16 年前
        1
  •  1
  •   Joshua Weinberg    16 年前

    据我所知,你建了libCompton,却喜欢直接到320,这只会引起地狱。将静态库链接在一起并尝试在最后的项目中使用它是不好玩的。链接three20对你的应用程序,以及它应该解决你的问题,康普顿应该只需要标题,以便进行编译,它将只需要这些符号出现在你的应用程序的最终链接。

        2
  •  0
  •   2snacc    16 年前

    代码现在已经编译好了,在模拟器和设备上都很好。