Xcode 6.3上的体系结构x86_64的未定义符号

时间:2015-08-04 12:09:24

标签: ios objective-c c xcode6 x86-64

我正在最终确定一个开源C编码的CometD库,我认为将它打开给像我这样的OSX / iOS用户是一个好主意。

为了简化OSX / iOS开发人员的工作,我想从静态C库切换到Xcode iOS Static Libary。所以我按照网上的建议,生成了一个静态的iOS兼容库。

问题在于,每次我尝试使用它时,都会收到类型错误:

  

架构x86_64的未定义符号:     ******,引用自:          - ******** *******。a(*******。o)

我的库中几乎每个C函数都会重复此错误。

首先我想也许这个库不是x86_64 compatible,空的,或者其中没有任何x86_64符号。

所以我查了一下" lipo -info"在图书馆,这是答案:

enter image description here

要确定我还使用了" nm -arch x86_64"在库上,并获取Xcode报告的几个未定义的函数作为错误。我以为我会错,除了猜猜什么之外什么也找不到?

我找到了符号:enter image description here

enter image description here

所以我的问题是:

  

如果符号存在于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项目的链接,请随意测试,因为我对如何修复它没有更多的想法,但更重要的是为什么以及在哪里有错误。

尽管如此,我还是会继续调查。

0 个答案:

没有答案