2010-02-19 44 views
1

我有這個庫的liavcodec.a靜態庫和頭文件。添加靜態庫在可可應用程序中的問題

libavcodec.a

我加入這個庫及其頭文件到我的項目,並沒有錯誤。我可以在Target-> Info-> General中看到這個庫,並且我也編輯了Header搜索路徑。

我可以將頭文件#import「avcodec.h」添加到xcode項目中。我可以使用在該文件的結構中聲明的所有變量。但我試圖使用該類的任何功能,我得到一些類似的錯誤,

Test.m 
—- 
「-avcodec_register_all」, referenced from: 
-[Test initialize] in Test.o 
Symbol(s) not found 
collect2: id returned 1 exit status 
—- 

你是什麼問題?

非常感謝。

回答

0

就像一個完整性檢查一樣,驗證您的庫文件是否包含預期的符號;在終端窗口中輸入這個(用正確的路徑替換路徑/到):

nm -g /path/to/libavcodec.a | grep avcodec_register_all 

(如果該命令的輸出僅僅是一個空行,然後將庫文件可能已損壞)。

+0

嗨,我檢查了,我得到了這個結果「nm:archive:libavcodec.a不包含成員是目標文件」。所以我的libray沒有.m類文件? – iphonemobdev 2010-02-20 04:38:52

+0

這意味着問題是你的庫文件,可能不是你的Xcode項目 - 我想這是一個構建配置問題,但這應該可能是一個單獨的計算器問題。 – 2010-02-20 14:54:03

1

提供[test initialize]方法的實現。還提供您用於構建靜態庫的配置命令。

嘗試重建庫,如果該庫包含在目標中並且頭部搜索路徑已正確配置,則應通過allcodecs.c文件直接訪問avcodec_register_all方法。正如tedge所說,圖書館可能是腐敗的。

+0

嗨, 我試過這個命令,我什麼也沒得到。 其實我必須將AAC轉換爲可可應用程序中的MP3,所以我得到了FFMPEG庫代碼,並且我遵循使用./configure,make和sudo make install。它沒有創建.dylib,但它在/ usr/local/lib中創建了這個靜態庫。所以我複製這個靜態庫和響應頭文件。 其實我無法直接從Info-> General中添加這個庫。 因此,我從那裏複製,並用於我的項目 – iphonemobdev 2010-02-20 07:12:40

+0

./configure將其構建爲默認配置,例如桌面或機器。您將不得不更改體系結構,以便它適用於iPhone。你將不得不爲ARM構建所有的細節,你可以在這裏找到它:http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-October/076618.html – 2010-02-20 08:48:24

+0

@「nm:archive:libavcodec.a不包含目標文件的成員「 這意味着該庫可能不是內置的。 – 2010-02-20 08:49:30

相關問題