添加静态库在可可应用程序中的问题

问题描述:

我有这个库的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 
—- 

你是什么问题?

非常感谢。

就像一个完整性检查一样,验证您的库文件是否包含预期的符号;在终端窗口中输入这个(用正确的路径替换路径/到):

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

提供[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