2016-11-22 42 views
0

我發現了以下編譯錯誤在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,則應用程序成功編譯。

有誰知道解決這個?

+0

我認爲你在尋找在錯誤的地方。該問題與任何C函數無關。相反,CUsingClass類完全缺失。這個類很可能是用Objective-C編寫的。你能給我們提供更多關於這門課的信息嗎?它是通過Cocoapod添加的框架的一部分嗎?它的目的是什麼? C類功能是什麼類? – Codo

+0

@Codo是,CUsingClass是在包括C文件(這也是在同一個盒)一個cocoapod一個Objective-C類。這個類沒有什麼特別之處,除了它從一行中的C文件調用C函數。 – BadmintonCat

+0

我認爲,帶'CUsingClass'類的吊艙是您的吊艙,而不是第三方吊艙。你是否通過CocoaPod pod使用另一個框架?如果是這樣,問題很可能與您的pod如何配置有關。否則,它很可能與您將該pod包含到您的項目中的方式不一致。 – Codo

回答

0

想通了,問題是,對於第三方莢的依賴項中,用於具有用作應用目標吊艙我自己的框架目標podspec文件沒有正確設置。因此,添加正確的依賴項,做一個吊艙安裝(和清潔)之後修復了這個問題:

s.dependency "ThirdpartyLib/Subspec" 

我錯過了subspec。

相關問題