2014-12-02 73 views
0

我stucked創造一個可可觸摸框架鏈接錯誤創建可可觸摸框架嵌套庫

enter image description here

收到此錯誤

Undefined symbols for architecture armv7: 
    "_AVMediaTypeVideo", referenced from: 
     _avf_read_header in libavdevice.a(avfoundation.o) 
    "_AVMediaTypeMuxed", referenced from: 
     _avf_read_header in libavdevice.a(avfoundation.o) 
    "_OBJC_CLASS_$_AVCaptureDeviceInput", referenced from: 
     objc-class-ref in libavdevice.a(avfoundation.o) 
    "_CMSampleBufferGetImageBuffer", referenced from: 
     _avf_read_header in libavdevice.a(avfoundation.o) 
     _avf_read_packet in libavdevice.a(avfoundation.o) 
    "_OBJC_CLASS_$_AVCaptureSession", referenced from: 
     objc-class-ref in libavdevice.a(avfoundation.o) 

... 

    "_LoggerAudio", referenced from: 
    -[KxMovieDecoder setSelectedAudioStream:] in KxMovieDecoder.o 
    -[KxMovieDecoder openAudioStream:] in KxMovieDecoder.o 
    -[KxMovieDecoder handleAudioFrame] in KxMovieDecoder.o 
    -[KxMovieDecoder decodeFrames:] in KxMovieDecoder.o 

ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

在項目中,我使用其他幾個系統dylib和框架以及其他手動添加的靜態庫及其相關頭文件。

該項目僅適用於ios8,非64。

這些庫都列在目標>常規>鏈接框架和庫中。 標題包含正確。

編譯和鏈接相同的文件在另一正確執行(正常應用,非庫)項目

我嘗試添加一個PCH也將所有改變需要的庫並沒有什麼。

+0

在目標你的庫鏈接這些框架? – Nick 2014-12-02 19:39:07

+0

你好,是的(看問題的最後3行)。謝謝 – jalone 2014-12-02 19:42:49

回答

1

動態庫的工作只適用於iOS 8.如果需要使用動態庫項目,添加你的框架都鏈接的框架和庫嵌入式二進制文件常規選項卡。它將是工作。

您可以更改靜態庫而不是動態庫。生成設置 - > Mach-O - >靜態libarary,並將部署目標更改爲iOS 7.0。在您的框架中完成這兩項工作後,即可在iOS 7.0及更高版本中進行工作。

以下步驟在Xcode 6

開放的Xcode創建靜態可可觸摸框架,並通過單擊文件\新建\項目,選擇的iOS \框架和庫\可可觸摸框架創建一個新的靜態框架項目。

將產品命名爲FrameWorkName並將項目保存到空目錄。

自動爲我們的框架創建標頭。在這個頭文件中,您應該使用像#import

這樣的語句導入我們框架的所有公共頭文件。靜態框架項目由頭文件和實現文件組成,這些頭文件和實現文件被編譯爲構建框架本身。您可以使用Cocoa Touch類創建課程。

驗證您的生成設置轉到您的項目的生成設置目標並確認或將「體系結構」設置爲「標準體系結構」。這些是arm64和armv7,可能是默認設置。除此之外,我們還需要設置幾個架構,因爲iOS應用程序需要在許多不同的架構上運行。

ARMv7的:用在最老的iOS 7支撐裝置 armv7s:如iPhone 5和圖5C用於 arm64:對於iPhone 5S I386 64位的ARM處理器:對於32位模擬器 x86_64的:用於64位模擬器

這意味着構建的速度可以儘可能快。當您存檔應用程序或在發佈模式下構建時,Xcode將爲所有ARM體系結構構建,從而允許應用程序在大多數設備上運行。

Mach-O的設置:靜態庫:

最終建成項目:

點擊here(你有更多的細節。)

的總目標,通過使用脂

的設備和模擬器框架結合起來

lipo「$ {SIMULATOR_LIBRARY_PATH}/$ {FRAMEWORK_NAME}」「$ {DEVICE_LIBRARY_PATH}/$ {FRAMEWORK_NAME}」-create -output「$ {FRAMEWORK}/$ {FRAMEWORK_NAME}」|回聲

點擊here你必須拿到步驟,創建通用框架

+0

是的,謝謝你,因爲我後來懷疑是因爲動態庫支持ios7。 – jalone 2014-12-15 09:45:43