文件是为归档而构建的,而不是被链接的体系结构(i386)

我得建立静态库。 我想在我的iPhone和iPad应用程序中使用。 当我尝试运行模拟器时,会出现链接错误。 我是iOS开发新手。 善意帮助;

ld:warning:忽略文件/Users/valuelabs/Desktop/DruvaProject/libraries/libnetUtils.a,文件是为归档而构建的,而不是被链接的体系结构(i386)架构i386的未定义符号:
“_OBJC_CLASS _ $ _ netUtils”,引用自:ViewController.o中的objc-class-ref ld:架构i386中未找到符号clang:error:linker命令失败,退出代码1(使用-v查看调用)

我尝试在架构中添加i386。 但没有运气


在解决了同样的问题之后,按照所有接受的更新构建设置的答案,清除链接器搜索路径等。我终于找到了适合我的答案。

在构建之前,请确保您选择正确的类型(iPhone模拟器)而不是iOS设备。 然后重建。 否则,您正在试图在Mac(i386)上的模拟器上使用为iOS设备(arm处理器)构建的库。 应该是显而易见的,但不是。

之前:

iOS设备设置

后:

iPhone 5.1模拟器设置

现在,查看导航器中的产品组>右键单击静态库(.a文件)>在Finder中显示,您会注意到它在Debug-iphonesimulator文件夹中而不是Debug-iphoneos。 我最初没有注意到文件夹名称,或者我可能早点想到了这一点。

希望这可以帮助。


有时候这些类型的错误会刺激你!

删除派生数据适用于我:

要解决的步骤

1)在XCODE> Windows> Project>选择您的项目>删除派生数据>退出XCODE并重新打开它>如果您获得MAC-O-Linker builed失败错误>引用此链接>再次清理并生成。


您的libnetUtils.a正在为与您的目标不同的架构而构建。

检查libnetUtils构建设置。 它正在构建的体系结构及其支持的体系结构列表必须是目标体系结构的(弱)超集。 这里的复杂性在于所产生的架构分布在各种设置上:“架构”,“仅构建活动架构”和“有效架构”。

“仅建立主动架构”设置使这个特别令人困惑。 例如,假设您正在为模拟器构建。 如果Debug的“Build active architecture only”设置设置为NO,那么它将构建“架构”和“有效架构”(可能是armv7等)中列出的所有架构。 但是,如果libnetUtils将该设置设置为“是”(调试:是),则它仅适用于i386。 所以当你的连接器试图连接armv7和i386时,它会失败。

链接地址: http://www.djcxy.com/p/64605.html

上一篇: file was built for archive which is not the architecture being linked (i386)

下一篇: XCode 4.2 w/ Three20: Undefined symbols for architecture i386: TTIsInDebugger