2015-10-17 59 views
0

我正在开发一个静态库,分发给许多开发人员。现在我面临着代码生成的问题。 当我将这个库包含到xcode项目并尝试将其归档时,连接器产生一个错误ENABLE_BITCODE在静态库

MyModule.o不包含位代码。您必须使用启用位码(Xcode设置ENABLE_BITCODE)重建它,从供应商处获得更新的库或禁用此目标的位码。对于架构arm64

我尝试了所有可能的事情(从herehere),没有任何帮助。在启用位代码标志的情况下,主机项目仍然不可编程。

奇怪的是otool -l命令说所有模块都包含一个位代码段。为什么xcode项目无法归档呢?

回答

0

传统上我正在回答我自己的问题) 希望这对未来某个人有用。

问题实际上并不在我自己的第三方框架中。我有旧版本的FacebookSDK链接到我的主机项目,实际上链接器需要重新编译它(或从供应商请求一个新版本)而不是我自己的库。

这绝对是奇怪和混淆为什么链接器报告我的一个库模块中的错误。 我的图书馆和FacebookSDK之间没有任何关系。

+0

请注意这一点:我确定您也有Bolts.framework。这已经被新的FBSDK框架内部引用了。然而,解析(如果有的话)将需要一个Bolts.framework,并且需要从Parse中获得。旧的(FacebookSDK)Bolts可能导致编译器问题。 – Aggressor

+0

感谢您的建议。我打算停止使用FacebookSDK并使用本地帐户框架。 – heximal

3

如果确实错误是从资料库中来(而不是从项目中的另一个库或框架),你可以编译静态库再次在Xcode 7

默认情况下 - 它会添加选项您的编译设置中的“enable_bitcode”。 确保它被设置为yes(默认值),并且所有其他源与lib支持位代码一起编译(如果不是 - 您将收到错误) - 并且您很好。

另一种方法是在使用您的库的Xcode项目中enable_bitcode = no(通知开发人员)。

+0

我知道我需要重新编译这个库,而且我用很多次,包括enable_bitcode = YES来做了很多次。主机项目仍会在其中一个库模块中产生关于丢失位代码段的错误 – heximal

+0

可能是使用或依赖于不支持位代码的外部或第三方库的模块之一。尝试隔离模块,它必须隐藏在那里。 – DocForNoc

+0

对不起,我刚刚注意到你在这个评论中给了我一个线索。感谢您花费您的时间,我对您的答案加强 – heximal