4

经过http://www.icodeblog.com/2011/04/07/creating-static-libraries-for-ios/后,我制作了一个静态库。为了测试这个库,我创建了一个新项目并将静态库拖到项目中并尝试测试它的一种方法。但它给了我错误““_OBJC_CLASS__$_MyLib”,引用自:”。MyLib 是我创建的库的名称。

我在创建静态库时采取的步骤。1.新建一个Xcode项目。2. 选择创建可可触摸静态库的选项。3. 在 MyLib.h 中编写了两个函数,并编写了一个用于斐波那契数列的实现,另一个用于生成数字的阶乘。3. 构建项目并点击MyLib.a 文件,在finder 中显示部分。4. 将 MyLib.a 文件和 MyLib.h 拖到一个名为 MyLib 的新文件夹中。

请提供任何帮助

4

3 回答 3

13

在为 iOS 构建库、框架或应用程序时,XCode 只会为目标的构建设置中指定的体系结构编译目标代码。XCode 也将仅链接到具有内置指定架构的二进制文件。

在 XCode 中,如果您选择您的目标,您可以在构建设置选项卡下看到您的目标的架构。它将包含 arm6、arm7 和 i386 等值。

在 iOS 模拟器中运行代码时,您是在 i386 架构的桌面上运行代码。

在设备上运行时,二进制文件具有为该架构构建的“切片”。如果二进制文件中不存在正确的架构“切片”,它将不会运行。

如果您在模拟器中运行 iOS 应用程序时遇到缺少 i386 架构的错误,您需要确保您的应用程序及其所有依赖库都是针对 i386 架构构建的。

还要检查目标的构建设置中的“仅构建活动架构”是否设置为 NO。

如果您因为没有源而无法重建依赖库,则必须在支持 arm6 或 arm7 架构的设备上进行测试。

于 2012-11-05T11:11:11.900 回答
2

当我尝试在 cpp 文件中添加 ac 标头时,我遇到了同样的问题,如下所示

//in c++ header file
#import "cHeader.h"

经过长时间的挣扎后,我了解到要在 cpp 文件中导入 c 标头,您需要执行以下操作:

//in c++ header file
extern "C"{
    #import "cHeader.h"
}

我的问题就解决了。

于 2013-07-08T05:07:25.837 回答
1

当我阅读此线程上的答案时,我遇到了完全相同的问题,最终能够在 Xcode 4.5 和 iOS 6 中运行。@idz 的答案效果很好,但您必须将库的项目包含在应用程序的项目中,然后将其设置为依赖项,这并不理想。

步骤 1-8 非常简单明了。您还需要确保标题搜索路径项目设置是准确的。祝你好运!

XCode 4.3:静态库生成

于 2012-11-18T01:36:57.790 回答