如何使用项目而不是使用静态库来构建ZBar SDK?

时间:2012-03-25 13:27:22

标签: iphone ios ios4 zbar-sdk

我正在使用ZBar SDK构建iOS代码扫描程序项目。我试图直接从ZBar的源代码构建我的项目,而不是包含libzbar.a静态库。

我已经下载了ZBar源代码,其中包含用于构建libzbar.a的XCode项目。我尝试从项目中复制所有源文件,但它不起作用。我继续得到未定义的符号错误。

考虑到我只需要支持iOS,应该包含哪些源文件?

是否应严格遵循文件夹结构来构建项目?

如果我直接包含源文件,是否需要构建设置?

修改 我遵循相同的文件夹结构并构建了libzbar的XCode项目中使用的设置。我已经设法构建了库,但它在链接时仍然失败。我收到所有源文件的错误:ld: duplicate symbol _OBJC_METACLASS。我已经进行了双重检查,项目中没有对原始libzbar.a静态库的引用或者这些源文件不止一次出现。如果我删除它们的引用,项目构建正常,但只要引用库中的任何符号,它就会失败。我想我仍然缺少一些东西!!

3 个答案:

答案 0 :(得分:3)

我终于解决了这个问题。以下是我所做的步骤:

1)将项目的源文件复制到我的项目中。

2)从我的项目中删除了libzbar.a的依赖。

3)将包含源和标题的文件夹的路径添加到项目的Header Search Paths构建设置中。

4)为项目添加了以下用户定义的构建设置:

<强> EXCLUDE_SOURCE_FILE_NAMES
GCC_MODEL_TUNING
PREBINDING
USE_HEADERMAP

答案 1 :(得分:0)

您应该从源代码创建自己的静态库,然后将输出静态库添加到项目中,或者将项目链接在一起,并在构建项目之前强制构建静态库。

从默认的Mercurial存储库下载zip文件并在xCode中打开文件后,单击目标选择下拉框中的“EmbedReader”部分并切换到“zBarSDK”

切换到zBarSDK后,只需从产品菜单构建,就可以获得静态库文件....

答案 2 :(得分:-1)

之前我使用过ZXing lib并且集成得很好。它作为一个项目包含在内,主项目具有目标依赖性,可以在主项目之前构建它。我根据自己的需要编辑了它的来源,并且没有任何问题。

我使用了这个tutorial。它也可以满足您的需求。