我得到這個蘋果的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