2012-10-23 42 views
1

我刚刚将UrbanAirship-1.3.3合并到我的项目中,按照来自the UrbanAirship site的指示并使用#import编辑了合适的头文件,它编译得很好。但是我的应用程序委托的方法内来自UAStoreFrontUI.h的调用代码生成链接器错误

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:NSDictionary*)launchOptions 

行:

[UAStoreFront useCustomUI:[UAStoreFrontUI class]]; 

这是现在需要使用城市飞艇,导致这些链接器错误:

Undefined symbols for architecture i386: 
    "_OBJC_CLASS_$_UAStoreFrontUI", referenced from: 
     objc-class-ref in AppDelegate.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

头文件( UAStoreFrontUI.h)导入没有问题,但只要我从它调用代码(例如[UAStoreFrontUI类]),链接器开始抱怨。我觉得这很奇怪,因为UAirship.h和UAStoreFront.h没有错误地链接和使用。

我是相当新的Xcode的,所以有可能是一个构建设置或我忽视的东西,但是,除此之外,在这一点上,我撞了南墙,不知道如何procceed。任何有识之士将不胜感激

+1

检查libUrbanAirship.a被链接在“链接二进制与图书馆”的目标构建阶段的部分。 – mattjgalloway

+0

@mattj yup,文件在“Link Binary with Libraries”下。我不知道如何相关,这可能是,但我已经在教程的15倍以上,并且我能找到的唯一的偏差是,在“头搜索路径”,在生成设置的教程说加上” .. /飞艇/**”。这样做产生一个链接错误,所以不是我想“$(SRCROOT)/飞艇/ **”,它工作正常,但来自“UIStoreFrontUI.h” – vigilance

回答

0

未将.m,.xib和其他资源文件的结果添加到Build PhasesCopy Bundle Resources下的链接器错误。看来适当的文件必须逐一明确添加,Copy Bundle Resources下,如添加在这些文件中存在似乎没有工作的文件夹。这在城市飞艇教程中没有记载......出于某种原因。

我偶然发现了该解决方案可以发现here进一步阅读

0

哦,我刚才看了一下城市飞艇和UAStoreFrontUI实际上只是符合UAStoreFrontUIProtocol协议类的例子。即它不是图书馆的课程。

你应该自己做,但我想如果你想使用他们的例子,那么你需要在项目中包含UAStoreFrontUI.hUAStoreFrontUI.m,就像你将自己的文件添加到项目中一样。

+0

访问代码时,我仍然得到一个链接错误我终于想通了在互联网上徘徊几个小时之后发布。感谢您的意见,您的建议绝对有助于缩小搜索范围。干杯! – vigilance