我發現了以下編譯錯誤在Xcode 8.1與使用框架靶這又使得使用包括cocoapod的iOS應用項目一些C函數:「符號(一個或多個)未找到架構x86_64的」錯誤,由於C函數
Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_CUsingClass", referenced from: objc-class-ref in libSDKFile.a(SessionManager.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
我已經用盡了所有的解決方案,我發現(構建設置/結構等)和C代碼甚至使用的extern「C」指令(在C頭文件):
#ifdef __cplusplus
#define CODE_EXPORT extern "C"
#else
#define CODE_EXPORT extern
#endif
CODE_EXPORT unsigned int myCFunction(const char *src, char *dst, unsigned int dst_size);
使用該cocoapod LIB與C文件的框架目標編譯成功,但應用程序目標失敗,出現上述錯誤。如果我註釋掉C函數include,則應用程序成功編譯。
有誰知道解決這個?
我認爲你在尋找在錯誤的地方。該問題與任何C函數無關。相反,CUsingClass類完全缺失。這個類很可能是用Objective-C編寫的。你能給我們提供更多關於這門課的信息嗎?它是通過Cocoapod添加的框架的一部分嗎?它的目的是什麼? C類功能是什麼類? – Codo
@Codo是,CUsingClass是在包括C文件(這也是在同一個盒)一個cocoapod一個Objective-C類。這個類沒有什麼特別之處,除了它從一行中的C文件調用C函數。 – BadmintonCat
我認爲,帶'CUsingClass'類的吊艙是您的吊艙,而不是第三方吊艙。你是否通過CocoaPod pod使用另一個框架?如果是這樣,問題很可能與您的pod如何配置有關。否則,它很可能與您將該pod包含到您的項目中的方式不一致。 – Codo