我正在最终确定一个开源C编码的CometD库,我认为将它打开给像我这样的OSX / iOS用户是一个好主意。
为了简化OSX / iOS开发人员的工作,我想从静态C库切换到Xcode iOS Static Libary。所以我按照网上的建议,生成了一个静态的iOS兼容库。
问题在于,每次我尝试使用它时,都会收到类型错误:
架构x86_64的未定义符号: ******,引用自: - ******** *******。a(*******。o)
我的库中几乎每个C函数都会重复此错误。
首先我想也许这个库不是x86_64 compatible
,空的,或者其中没有任何x86_64符号。
所以我查了一下" lipo -info"在图书馆,这是答案:
要确定我还使用了" nm -arch x86_64"在库上,并获取Xcode报告的几个未定义的函数作为错误。我以为我会错,除了猜猜什么之外什么也找不到?
所以我的问题是:
如果符号存在于x86_64兼容库中,为什么Xcode会提示此错误?即使我为所有arm * / s类型编译库,我仍然会收到此x86_64错误。
我没有意识到某些事情,或者我只是做错了吗?
您的回答永远受到赞赏。
更新(这是Xcode项目的链接):https://github.com/GhostGumm/CometD-x86_64-issue
更新2 :Trojanfoe先生引起了我对编译时的链接警告的注意。实际上,链接器似乎错过了加载库以寻找不存在的目录。将库移动到右侧目录,手动链接后,x86_64错误消失了。
可悲的是,这个问题仍然存在。在成功编译之后,我尝试使用lib,但是,当我" alloc"和" init"我的主要课程如下:
ZetaFactory *Client = [[ZetaFactory alloc] init];
x86_64的错误随着十亿个太阳的真正激烈而咆哮。 我发布了Xcode项目的链接,请随意测试,因为我对如何修复它没有更多的想法,但更重要的是为什么以及在哪里有错误。
尽管如此,我还是会继续调查。