首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于体系结构x86_64的ios静态库未定义符号

用于体系结构x86_64的ios静态库未定义符号
EN

Stack Overflow用户
提问于 2015-04-13 14:02:26
回答 2查看 5.8K关注 0票数 2

胖文件中的体系结构:libXxx.a是: armv7 i386 arm64

但是依赖项目中的编译器会产生链接错误,

代码语言:javascript
复制
Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_ClassXXXX", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我是不是遗漏了什么?库项目的所有目标都有体系结构:标准体系结构(armv7,arm64)和有效的体系结构arm64、armv7、armv7s

在我的lipo命令中,在创建通用二进制文件时,我将从iphone仿真器和iphoneos文件夹中同时使用lipo。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-13 14:15:53

您的主要线索是,它说“在架构x86_64中找不到符号”,而不是“在体系结构i386中找不到符号”。

修复是调整您的构建设置,以允许32位构建。

1)在(左侧侧边栏)中选择项目文件

2)选择项目的目标(刚出现的面板中目标下的第一项)

3)查找“架构”设置(如果找不到“架构”,请确保选中“所有”)

4)将其从“标准体系结构”更改为“通用”(或者显式“32位”(如果您愿意)。

您应该能够在这样做之后进行构建。

票数 0
EN

Stack Overflow用户

发布于 2015-04-14 04:44:58

您需要在静态库项目中创建一个通用二进制文件,包括以下体系结构。体系结构应该包括64位、armv7、armv7s、arm64.

现在,当您在终端上执行lipo -info anyStaticLibrary.a .a时,您应该会看到armv7 armv7s i386 x86_64 arm64体系结构作为您的fat二进制文件。

还请注意,使用上述静态库的项目可以很好地处理架构的默认设置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29607258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档