我得到这个苹果的Mach-O链接错误:架构arm64的未定义符号。将C调用到ObjC++文件中?
Undefined symbols for architecture arm64:
"_TestFunction", referenced from:
-[ViewController viewDidLoad] in ViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这里的一切必要重现错误的步骤:
- 我创建了一个新的单一视图通用Objective C的项目(Xcode的版本6.0.1(6A317)))。
- 我然后创建一个名为TestClass的 一个新的ObjectiveC文件
- 变化TestClass.m到TestClass.mm
- 添加 “
void TestFunction();
” 我的.h - 添加 “
void TestFunction(){}
” 我.mm - 导入
TestClass.h
到我的ViewController.m
并尝试从我的viewDidLoad调用TestFunction()
。
我正在做一些核心音频工作,需要在我的MIDI回调中做一些C++调用,所以我不能进行任何ObjectiveC方法调用,因为它们会阻塞音频线程。
也许Xcode视图TestFunction()作为一个C++调用,所以不会使它从一个纯粹的ObjectiveC类?有什么办法告诉Xcode它是一个C函数吗?
解决了它谢谢你的信息! 我通过在我的项目中使用构建体系结构,让我感到非常头痛! – user3306249 2014-10-16 12:42:25
你是怎么知道这件事的?我在哪里可以阅读这样的内容?谢谢你的回答,它为我节省了很多时间。 – theFool 2016-07-27 08:56:08
非常感谢你! – 2017-07-04 17:48:55