我正在使用ZBar SDK构建iOS代码扫描程序项目。我试图直接从ZBar的源代码构建我的项目,而不是包含libzbar.a静态库。
我已经下载了ZBar源代码,其中包含用于构建libzbar.a的XCode项目。我尝试从项目中复制所有源文件,但它不起作用。我继续得到未定义的符号错误。
考虑到我只需要支持iOS,应该包含哪些源文件?
是否应严格遵循文件夹结构来构建项目?
如果我直接包含源文件,是否需要构建设置?
修改
我遵循相同的文件夹结构并构建了libzbar的XCode项目中使用的设置。我已经设法构建了库,但它在链接时仍然失败。我收到所有源文件的错误:ld: duplicate symbol _OBJC_METACLASS
。我已经进行了双重检查,项目中没有对原始libzbar.a静态库的引用或者这些源文件不止一次出现。如果我删除它们的引用,项目构建正常,但只要引用库中的任何符号,它就会失败。我想我仍然缺少一些东西!!
答案 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。它也可以满足您的需求。