【问题标题】:How to resolve Undefined Symbols error?如何解决未定义符号错误?
【发布时间】:2009-04-29 22:11:44
【问题描述】:

我收到了这个错误

Undefined symbols:
".objc_class_name_MyClass", referenced from:
  literal-pointer@__OBJC@__cls_refs@MyClass in infoViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

当引用下面的静态方法时:

[MyClass ClickComment:self.navigationController];

MyClass 在我的应用项目中引用的静态库中定义。当我开始输入“[MyClass”...时,我会收到消息提示。应用程序项目知道 MyClass 存在以及在其上定义了哪些方法。然而,我得到了上述错误。注释掉这个调用允许项目无错误地构建。

在静态库中,我有一个引用库的所有 .h 文件的 .h 文件。这样,应用程序项目只需要从静态库中引用一个 .h 文件。静态库项目也有一个应用程序。我用它来测试静态库。我可以很好地完成上述通话。当静态库构建了设备/调试版本并且应用程序项目构建了模拟器/调试时,我通常会看到这些类型的错误。但是,两个版本是同步的。

我知道有一个参考问题,但我不确定如何解决它。有什么建议吗?

【问题讨论】:

    标签: objective-c iphone shared-libraries


    【解决方案1】:

    这意味着在编译过程中找到了头文件,但链接器不知道静态库。确保您的静态库在项目视图中的“Targets -> YourMainTarget > Link Binary with Libraries”下列出。

    见http://developer.apple.com/tools/XCode/XCodeprojects.html

    【讨论】:

    • 我现在可以正常工作了。主要是,在 MyClass 的静态库中,我需要在 MyClass.m 中添加几个#import 语句。我发现这很奇怪,因为所有#import 语句都在上面提到的 .h 文件中,该文件由项目的 PCH 文件引用,我在库目标的编译标题中看到了该文件。在某个地方,仍然存在断开连接。
    猜你喜欢
    • 2017-06-23
    • 2022-11-25
    • 2014-08-23
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多