gpt4 book ai didi

objective-c - Objective-C 链接器错误 : Undefined Symbols

转载 作者:行者123 更新时间:2023-12-04 03:14:21 25 4
gpt4 key购买 nike

有 undefined symbol 是什么意思?

代码文件本身没有错误,我没有使用任何外部库。

我确实在发生此链接器错误之前添加了一个typedef NS_ENUM

我在哪里添加此 -v 以查看调用?

这是错误信息:

Undefined symbols for architecture x86_64:
"_OBJC_IVAR_$_UIViewController._parentViewController", referenced from:
-[PEPI_LessonController setParentViewController:] in PEPI_LessonController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

最佳答案

“ undefined symbol ”

将源代码文件构建为可执行文件至少包括两个步骤:

  1. 将源代码文件编译为中间二进制文件(通常称为 xyz.o )。
  2. 将中间二进制文件链接到最终的可执行文件。

错误消息“undefined symbols”是链接器消息。即使编译过程成功,它也可能会出现,恕不另行通知。链接器组织最终内存地址关系,并替换编译器必须假设它们将有效的符号稍后,如果代码的所有部分都可用。没有这个,就根本不可能进行模块化。

-v 查看调用

如果您在 Xcode 中构建应用程序,则 Xcode 会为您调用所有编译和链接命令(CompileCLnClang ...)。但请记住,典型的 IDE 仅运行您可以在 shell 中自行运行的命令。理论上,您只能在文本编辑器和 shell 中开发大型应用程序。所以我建议花一些时间尝试将 Xcode 构建报告中列出的一些命令复制粘贴到 shell :-) 您将学到很多关于背景的知识。因此,在我看来,-v to see invocation在 shell 或build设置中调用命令时使用,如果您希望永久获得更多信息。

“外部库”

最后,尝试澄清“外部库”。看一个最简单的例子:即使你写了一个简单的 C 程序,你想知道一些像字符串长度这样微不足道的事情,你也会 include <glibc.h> .现在这个一个外部库。它在您的程序代码之外。您确定没有包含外部库吗?

解决链接器问题<​​/strong>

链接器错误通常令人困惑且难以理解,因为链接模块的细节往往看不到。如果您在搜索引擎中输入错误消息,您可能会找到很多提示。例如,看看这里:

Undefined symbols for architecture armv7: "_SCNetworkReachabilityCreateWithAddress"

即使找到所有组件进行链接,所有路径都是已知的等,它们也可能有错误的版本或其他。

关于objective-c - Objective-C 链接器错误 : Undefined Symbols,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24497948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com