Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >未定义符号和重复符号错误。可以针对调试或发布进行构建,但不能同时针对这两者进行构建

未定义符号和重复符号错误。可以针对调试或发布进行构建,但不能同时针对这两者进行构建
EN

Stack Overflow用户
提问于 2012-09-26 22:27:11
回答 1查看 1.8K关注 0票数 1

我有一个包含另一个项目的项目的问题。第二个项目是主项目所需的SDK。目前,我已经将SDK作为静态库包含在主项目中。SDK和主项目都包括FBConnect和非官方的Twitter SDK框架。我相信我的问题是由于这两个项目都包含了这些框架,但我一直无法找到一种方法来让它们共存而不出错。

当项目为调试而生成时,它将不会为存档而生成,反之亦然。每次我都可以通过执行相同的步骤来解决问题,但我希望找到一种方法来解决它,而不需要在调试和归档构建之间执行任何步骤。

当为调试而构建的项目没有任何错误时,我在尝试归档构建时得到了以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_SBJSON", referenced from:
      objc-class-ref in FBRequest.o
      objc-class-ref in libSDK.a(ApiTvDiscussView.o)
      objc-class-ref in libSDK.a(ApiWebView.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

然后,按照链接的屏幕截图:Screenshot,在目标的构建阶段,将FBConnect框架使用的SBJSON库的实现文件添加到编译源代码中

这会产生一个不同的问题,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    duplicate symbol _OBJC_METACLASS_$_OAHMAC_SHA1SignatureProvider in:
        /Users/Alan/Library/Developer/Xcode/DerivedData/App-gpvfsbaxxbvhsddtcbgkggquyltl/Build/Intermediates/ArchiveIntermediates/App/IntermediateBuildFilesPath/App.build/Release-iphoneos/App.build/Objects-normal/armv7/OAHMAC_SHA1SignatureProvider.o
./libSDK.a(OAHMAC_SHA1SignatureProvider.o)

    .
    .
    .
    .
    .

    duplicate symbol _OBJC_CLASS_$_TwitterDialog in:
        /Users/Alan/Library/Developer/Xcode/DerivedData/App-gpvfsbaxxbvhsddtcbgkggquyltl/Build/Intermediates/ArchiveIntermediates/App/IntermediateBuildFilesPath/App.build/Release-iphoneos/App.build/Objects-normal/armv7/TwitterDialog.o
        ./libSDK.a(TwitterDialog.o)
    duplicate symbol _OBJC_METACLASS_$_TwitterDialog in:
        /Users/Alan/Library/Developer/Xcode/DerivedData/App-gpvfsbaxxbvhsddtcbgkggquyltl/Build/Intermediates/ArchiveIntermediates/App/IntermediateBuildFilesPath/App.build/Release-iphoneos/App.build/Objects-normal/armv7/TwitterDialog.o
        ./libSDK.a(TwitterDialog.o)
    ld: 43 duplicate symbols for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

在目标的构建阶段,从编译源代码中删除非官方Twitter SDK框架使用的OAUTH库的实现文件可以消除这些错误,并且项目归档构建成功。

当我尝试构建用于调试的项目时,我得到了与这些错误相反的错误,首先是未定义OAUTH库符号。将它们添加到编译源可以解决这个问题,然后会复制SBJSON符号。从编译源中删除它们可以使调试构建成功完成。

有没有人知道有一种方法可以让它们和谐共存,这样我就可以同时进行项目的调试和归档构建,而不需要每次都修改这个文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-27 11:04:01

Twitter和Facebook库都针对相同的SBJSON框架进行链接。从代码构建这两个库,而不是使用静态库。执行此操作时,从其中一个SDK中删除SBJSON引用。

这是我讨厌基于静态库进行构建的另一个原因。如果你没有源代码,库的创建者没有给他的类/方法加前缀,那么这个问题将是无法解决的。

或者,您可以使用最新发布的Facebook SDK版本3.1,其中最终将SBJSON作为FBSBJSON的前缀。

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

https://stackoverflow.com/questions/12611410

复制
相关文章
Linux From Scratch(LFS11.0)构建 LFS 系统 - 移除调试符号
大多数使用以下命令的用户不会遇到什么困难。但是,如果打错了命令,很容易导致新系统无法使用,因此在运行 strip 命令前,最好备份 LFS 系统的当前状态。
Lucifer三思而后行
2021/10/08
8230
Promethues如何针对Redis进行监控
需求:采用redis_exporter 收集数据,promethus采集redis_exporter数据,granfana展示数据 一、简易安装redis yum install -y redis rpm -qa |grep redis lsof -i :6379 rpm -ql redis systemctl start redis 找到配置文件/etc/redis.conf,修改 requirepass QpMD61xo 重启动redis systemctl restart redis 二、下载re
Linux运维技术之路
2022/06/07
4890
Promethues如何针对Redis进行监控
Maven进行增量构建
如果要开始任何新的基于Java的项目,则gradle应该是第一选择,但是某些场景或者某些方面,Maven依然有着不错的优势。在编译构建项目时,就会需要一些插件来提供不同的功能支持。
FunTester
2020/04/03
2.8K0
FastAPI(60)- 针对 WebSocket 进行单元测试
FastAPI 的单元测试:https://www.cnblogs.com/poloyy/p/15354901.html
小菠萝测试笔记
2021/10/09
1.1K0
FastAPI(60)- 针对 WebSocket 进行单元测试
针对我国——国产数据库进行分析
Oracle能在所有主流平台上运行(包括Windows),完全支持所有的工业标准,采用完全开放策略,可以使客户选择最适合的解决方案,对开发商全力支持。
用户10196776
2022/11/22
1.2K0
针对我国——国产数据库进行分析
Gradle 6 针对已有的构建如何创建一个构建扫描
构建扫描(build scan)是一个中心化并且可以共享的构建记录。这个构建记录通常能够告诉在构建中发生了什么并且为什么会发生。
HoneyMoose
2020/04/01
4710
Gradle 6 针对已有的构建如何创建一个构建扫描
如何针对大量目标进行指纹识别
针对某个企业进行渗透测试,通过前期信息收集,会收集到非常多的子域名,有大量应用系统需要我们做测试,当然不可能所有系统都是企业自研,也许会用到比较多的开源系统或者开源组件,那么如何针对大量目标进行指纹识别呢?
信安之路
2021/07/29
1.1K0
无符号数和有符号数
人有十个手指头,习惯了逢十进一,于是十进制成了生活中的标准。程序的世界只有高低电平两种状态,更适合用二进制来表示,于是二进制成了程序世界的标准。 对与无符号数来说,我们更喜欢谈他们之间的转化,十进制是我们最习惯的进制,于是十进制转为R进制,R进制转为十进制变尤为重要。
naget
2019/07/03
3.1K0
无符号数和有符号数
使用Jenkins进行自动构建
介绍自动构建之前先来聊一聊什么是手动构建,姜同学作为一名开发人员我们写完代码之后会把代码提交到Git上,然后push到我们自己的远程仓库,比如gitlab。如果姜同学的工作只是写写代码,push结束之后你的一个阶段工作也就结束了,但是这时候最新的代码还仅仅是保留在了git上,没有以应用的形式展现出来,无法体现你的工作展现你的价值。so,以java代码为例姜同学还要使用最新的代码打个包,然后放到服务器上,停掉旧的应用,启动新的应用,假设一个集群有三个应用实例,滚动更新,上面的步骤姜同学还要在重复两遍。以上的整个步骤便是手动构建,那么什么是自动构建呢,就是让另外一个应用代替姜同学完成上面的步骤,当然写代码除外-_-。 代替姜同学便是Jenkins。
姜同学
2022/12/08
1.2K0
使用Jenkins进行自动构建
使用Angular CLI进行Build (构建) 和 Serve
Build. Build主要会做以下动作: 编译项目文件并输出到某个目录 Build targets决定了输出的结果 bundling 打包 生产环境的build还会进行uglify和tree-shaking(把没用的代码去掉) ng build. 可以先看帮助: ng build --help 针对开发环境, 就是用命令 ng build. 默认情况下, 它的输出目录在.angular-cli.json文件里ourDir属性配置的, 默认是/dist目录. build之后会看见dist里面有这些文件: i
solenovex
2018/03/29
2.3K0
使用Angular CLI进行Build (构建) 和 Serve
replaceAll()如何同时替换多个不同的字符串(或多个符号)
正好我遇到过这个情况,就跟她分享了一下心得,解决问题后的她开心的像刚充完气儿一样。
陈哈哈
2020/07/03
5.7K0
谷歌发布 TensorFlow 1.6.0,针对 CUDA 9.0 和 cuDNN 7 预构建二进制文件
日前,谷歌发布 TensorFlow 1.6.0 正式版,带来了多项更新和优化,雷锋网 AI 研习社将谷歌官方介绍编译如下: 重大改进: 针对 CUDA 9.0 和 cuDNN 7 预构建二进制文
AI研习社
2018/03/16
8750
谷歌发布 TensorFlow 1.6.0,针对 CUDA 9.0 和 cuDNN 7 预构建二进制文件
最佳实践:针对Rust 应用 Zellij 进行故障排除和性能提升
作者 | Jannik Wemp 译者 | 平川 策划 | 万佳 在过去的几个月中,我们一直在针对我们的 Rust 应用 Zellij 进行故障排除和性能提升。在这一过程中我们发现了一些问题和瓶颈,不得不寻找一些创造性的解决方案来处理或绕过它们。 在这篇文章中,我将介绍和说明我们最近解决的两大问题,解决它们后我们的应用性能提升到了(有时甚至超过了)类似应用的水平。 这是 Zellij 维护者和社区贡献者的共同努力成果。请参阅文末获取更多细节。 1关于代码示例的说明 这篇文章中的代码示例是简化版本,只用来
深度学习与Python
2023/04/01
7010
最佳实践:针对Rust 应用 Zellij 进行故障排除和性能提升
Maven 错误找不到符号
当碰到maven错误:找不到符号问题时,通常第一反应应该是执行eclipse的Project -> Clean … -> Clean all projects,然后再执行maven clean,将项目清理一下,然后再试试,如果还是不能解决接着往下看。
我是李超人
2020/08/20
7.4K0
nginx 进行正则匹配(常见正则匹配符号表示)
今天遇到网站之前的url被百度搜索引擎抓取,需要在服务中进行301强制跳转,(如访问:www.baidu.com/kenni-1,www.baidu.com/kenni-1/,两个统一跳转到www.b
botkenni
2019/09/09
35.2K0
在Kubernetes中如何针对Namespace进行资源限制?
LimitRange有个好听的中文名字,叫"资源配置访问管理"。用过K8S的都知道,在默认情况下,K8S不会对Pod进行CPU和内存限制,这就意味着这个未被限制的Pod可以随心所欲的使用节点上的CPU和内存,如果某个Pod发生内存泄漏那么将是一个非常糟糕的事情。 所以正常情况下,我们在部署Pod的时候都会把Requests和Limits加上,如下:
极客运维圈
2020/04/07
1.9K0
mysql针对字段中换行符\r\n进行查询和删除
mysql中某个数据字段包含换行符,导致前台解析json时报错 “Uncaught SyntaxError: Unexpected token in JSON at position 333”; char(9), char(10), char(13)分别是: char(9) 表示水平制表符 (tab键 \t) char(10) 表示换行键 (\n) char(13) 表示回车键 (\r) 针对上述问题字段在mysql数据库中进行查询,如下语句 ```sql SELECT *FROM qy
Qicloud
2022/01/27
4.7K0
mysql针对字段中换行符\r\n进行查询和删除
如何针对不同的数据需求构建OpenStack存储云
OpenStack的存储组件—Cinder和Swift—让你在你的私有云里构建块和对象的存储系统。Chris Evans对这些技术给出了一些深入的阐述。 在向web规模计算的转型中,虚拟化,x86架构的迁移和DevOps的快速应用这样的关键技术已经转变了整个IT的生态系统。随着部署到IT的系统数量的持续增大,下一个挑战将变成以更有效和高效的方式来编排和管理计算,存储和网络资源,为私有云提供服务。 OpenStack是一个开源的云计算平台项目,最初是由NASA和Rackspace Hosting在2010年联
静一
2018/03/21
2K0
在针对Bluemix的Lookback应用中进行身份认证
在针对Bluemix的Lookback应用中进行身份认证。使用Node.js API框架LoopBack支持使用第三方登录来验证用户和链接帐户。LoopBack利用passport通过loopback-component-passport模块来支持第三方登录。在示例中,使用了Facebook,Google和Twitter进行身份验证。同时,使用passport-idaas-openidconnect模块进行配置。
Steve Wang
2018/01/08
1.3K0
在针对Bluemix的Lookback应用中进行身份认证
点击加载更多

相似问题

无法针对发布进行编译,是否可以针对调试进行编译?[iphone]

10

将我的iPhone项目设置为针对发布而非调试进行构建

30

Android不能针对API级别13进行构建

10

针对关卡构建数组进行Hittesting

16

针对rabbitmq-c进行构建

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文