Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 静态库依赖项在Xcode 3.2.3上的模拟器中编译,在设备上失败_Iphone_Xcode_Linker_Three20_Static Libraries - Fatal编程技术网

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

Iphone 静态库依赖项在Xcode 3.2.3上的模拟器中编译,在设备上失败,iphone,xcode,linker,three20,static-libraries,Iphone,Xcode,Linker,Three20,Static Libraries,升级到XCode 3.2.3和iPhone 3.2/4.0 SDK在我的构建过程中引入了一个奇怪的bug 我有一个静态库,康普顿,它本身依赖于three20。我将康普顿构建为它所支持的客户端应用程序的依赖项 当我以模拟器或设备模式(3.2或4.0SDK)将康普顿编译为自己的项目时,一切都很好,没有错误 当我使用3.2或4.0 SDK simulator编译一个引用康普顿的客户端应用程序,目标是3.2上的iPhone或iPhone/iPad时,一切都很好,没有编译错误,应用程序在模拟器中按预期运行

升级到XCode 3.2.3和iPhone 3.2/4.0 SDK在我的构建过程中引入了一个奇怪的bug

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

当我以模拟器或设备模式(3.2或4.0SDK)将康普顿编译为自己的项目时,一切都很好,没有错误

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

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

我用的是今天拉的three20的后备箱版本

以下是链接错误的输出:

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
有人能帮我找出这里可能出了什么问题吗

更新:我已通过使用three20和three20的fork并删除three20和Compton上的-all_load linker标志,消除了重复符号链接错误。我陷入的真正疯狂的问题仍然是:我可以在模拟器中编译和运行应用程序,但是在为设备编译时,我会遇到上面的链接错误


更新2:我已经解决了问题,添加了答案并接受了它。问题确实在于构建配置设置——如果您使用的是4.0 SDK,则需要将“架构”设置为“优化(armv7)”。

从我所知,您构建了libCompton,但却喜欢将其直接设置为three20,这只会导致地狱。将静态库链接在一起,并尝试在最终项目中使用它,这并不是一件有趣的事情。同样针对您的应用程序链接three20,它应该解决您的问题,康普顿应该只需要标题来编译,它只需要在应用程序的最终链接中出现这些符号。

我现在已经解决了这个问题,答案来自苹果开发者论坛。如果将基本SDK设置为>3.2,则需要将构建设置中的“架构”选项设置为优化(armv7)


代码现在可以在模拟器和设备上编译并正常运行。

您是否构建了相同的目标和配置?@cory.m.smith我的客户端应用程序的“目标设备系列”设置为“iPhone”,其“基本SDK”设置为“iPhone设备4.0”。这就是你要问的吗?这个链接看起来很有希望给出一个答案:如果你仍然有这个问题,那么你仍然有一个-所有的负载在那里的某个地方。你永远不会在模拟器中得到这个错误,所以在那里修复它是没有帮助的。更改为armv7只意味着你的应用程序无法在我的iPhone 3G上运行。也许对你来说不是问题。我建议特别设置armv6——它可以在任何东西上运行,而且不需要我博客文章中的黑客攻击。这真的很有趣——所以你是说在我为康普顿的构建设置中,我为three20设置了正确的头搜索路径,但实际上不包括康普顿项目中three20项目文件的引用。相反,您建议将three20项目的文件引用放在我的应用程序中,并作为应用程序的依赖项而不是康普顿的依赖项进行构建。这是正确的吗?是的,我对其他静态库也做过类似的事情。您可以这样做,并且仍然使用armv6+armv7请注意,我们中的一些人的iOS 4.0设备不支持armv7。。。指定armv6特别解决了这个问题。