【问题标题】:Undefined symbols in another Xcode project [duplicate]另一个Xcode项目中的未定义符号[重复]
【发布时间】:2013-03-18 11:24:43
【问题描述】:

我昨天在这里问了一个关于HOWTO debug in a framework的问题。

我有一个networkLib 和一个usingLibDemo 项目。

答案建议我将networkLib 拉入usingLibDemo,以便在源代码中进行调试。

现在我已经试过了:

  1. networkLib输出一个框架,并在 usingLibDemo。它有效。
  2. networkLib的源代码全部复制到usingLibDemo中,即可 再次工作。
  3. networkLib项目拖入usingLibDemo项目,设置 在Build Settings 中设置Header Search Paths 并在Build Phases 中设置Target Dependencies。它失败了。

在#3 的情况下,仅使用标头即可成功构建项目。例如,我只是使用协议:

@interface ViewController : UIViewController <LoginUIDelegate>

@property (retain, nonatomic) IBOutlet UITextField *usernameText;
@property (retain, nonatomic) IBOutlet UITextField *passwordText;
@property (retain, nonatomic) IBOutlet UIButton *loginButton;

- (IBAction)loginBtnDidClick:(id)sender;

@end

但是当我使用.m文件中的代码时:

[[LoginBizLogic sharedInstance] loginWithUsername:username password:password tokenLogin:NO uiDelegate:self];

构建失败,如下所示:

LoginBizLogic 的@interfaceLoginUIDelegateLoginBizLogic.h 文件中定义,但@implementation 在“LoginBizLogic.m”文件中。

我认为LoginBizLogic没有正确链接,与其他类相同,但我不知道问题出在哪里,或者在哪里配置。

非常感谢。

【问题讨论】:

标签: iphone ios objective-c xcode


【解决方案1】:

Undefined symbols for architecture i386: _OBJC_CLASS_$_SKPSMTPMessage", referenced from: error阅读答案

如果您的类的 .m 文件未在目标的“构建阶段”选项卡的“编译源”步骤下列出,则可能会出现此类错误。通常 Xcode 会为您执行此操作,但有时它会丢失绘图并且您需要手动添加 .m 文件。

你的情况:

TargetSettings -> Build Phases -> Compile Sources -> add your .m file  ->Build and Run 

【讨论】:

  • @iPatel 感谢您提供的宝贵帮助,但请确保不要在此处发布重复的答案,而只是链接该问题,仅供参考,重复的答案将被社区删除,希望你能得到我!跨度>
【解决方案2】:

谢谢你,@iPatel

从你的回答我知道问题出在哪里:

以及如何显式编译导入的文件,但是networkLib有太多文件需要选择:

选择135项很烦,我已经设置了依赖:

所以我想在编译usingLibDemo之前,networkLib已经编译好了。

编译好了,为什么找不到符号? --------> 没有链接!我导入库进行链接:

就是这样!再次感谢。

【讨论】:

  • 拜托了!不要忘记接受其他人或自己发布的解决方案的答案。一旦你接受了答案,人们就会知道这个问题已经解决了,这就是解决方案,因为这会导致更好的堆栈溢出和你的 repo。
  • 我遇到了同样的问题,链接二进制文件解决了这个问题。谢谢
猜你喜欢
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-27
  • 2012-08-27
  • 2011-03-23
  • 2013-11-22
相关资源
最近更新 更多