Objective c 目标C链接器错误:未定义的符号
有未定义的符号意味着什么 代码文件本身没有错误,我也没有使用任何外部库 在发生此链接器错误之前,我确实添加了一个Objective c 目标C链接器错误:未定义的符号,objective-c,xcode,build,Objective C,Xcode,Build,有未定义的符号意味着什么 代码文件本身没有错误,我也没有使用任何外部库 在发生此链接器错误之前,我确实添加了一个typedef NS_ENUM 在何处添加此-v以查看调用? 以下是错误消息: Undefined symbols for architecture x86_64: "_OBJC_IVAR_$_UIViewController._parentViewController", referenced from: -[PEPI_LessonController setPare
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)
这意味着在链接对象文件时找不到属性parentViewController和方法setParentViewController。这些类型错误最常见的原因是没有链接目标项目中的库或框架。UIViewController是UIKit的一部分,所以如果它还没有链接,我会感到惊讶。这是一个OSX项目,您正在尝试使用UIViewcontroller而不是NSViewController吗?“未定义的符号” 将源代码文件构建为可执行文件至少包括两个步骤:
xyz.o
)CompileC
,Ln
,Clang
…)。但是请记住,典型的IDE只运行您可以在shell中自己运行的命令。理论上,您只能在文本编辑器和shell中开发大型应用程序。因此,我建议您花些时间,尝试将Xcode构建报告中列出的一些命令复制粘贴到shell:-)您将了解很多背景知识。因此,在我看来,在shell中或在构建设置中调用命令时,如果您希望获得更多信息,可以使用-v查看调用
“外部库”
最后,尝试澄清“外部图书馆”。看一个最简单的例子:即使你写了一个简单的C程序,你想知道一些琐碎的东西,比如字符串的长度,你也会包括。现在这是一个外部库。它位于程序代码的外部。您确定没有包含外部库吗
解决链接器问题
链接器错误常常令人困惑,而且有点困难,因为链接模块的细节往往看不见。如果在搜索引擎中输入错误消息,您可能会发现许多提示。例如,看看这里:
即使找到了所有用于链接的组件,所有路径都是已知的,等等,它们也可能有错误的版本。这是一个iOS(iPad)项目。我实际上是UIViewController的子类,不确定这是否意味着什么。它是今天早上构建的,但是在修改了主控制器(负责选择正确的视图)中的一些代码之后,我开始得到它。在发生此链接器错误之前,我确实添加了一个typedef NS_ENUM
。@Guido Anselmi:Check Xcode>Your project>Targets>“Build Phases”>“Link Binary with Libraries”。大多数链接器问题都在那里解决了。我需要补充什么?我没有在我的项目中使用任何外部库。NS_Enum类是否存在于外部库中?请确保列出UIKit.framework。如果没有,请添加它。NS_Enum不是一个类,也不应该有什么不同。