9

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

我已经下载了 ZBar 源代码,其中包括用于构建 libzbar.a 的 XCode 项目。我尝试从项目中复制所有源文件,但没有成功。我不断收到未定义的符号错误。

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

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

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

编辑: 我遵循了 libzbar 的 XCode 项目中使用的相同文件夹结构和构建设置。我已经设法构建了库,但链接时仍然失败。我得到错误:ld: duplicate symbol _OBJC_METACLASS对于所有源文件。我已经仔细检查过,项目中没有对原始 libzbar.a 静态库的引用,或者这些源文件不止一次出现。如果我删除它们的引用,则项目构建良好,但每当引用库中的任何符号时都会失败。我想我仍然缺少一些东西!

4

3 回答 3

3

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

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

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

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

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

EXCLUDE_SOURCE_FILE_NAMES
GCC_MODEL_TUNING
PREBINDING
USE_HEADERMAP

于 2012-03-30T10:20:03.460 回答
0

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

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

切换到 zBarSDK 后,只需从产品菜单构建,您就应该拥有静态库文件......

于 2012-03-25T14:51:56.677 回答
-1

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

我使用了本教程。它也可以满足您的需求。

于 2012-03-29T11:05:50.073 回答