编译问题: "ld: duplicate symbol _OBJC_METACLASS_$_XXX..."
在新的SDK环境中调试百度地图的应用程序时,app总是意外退出,找了半天发现错误的原因是unrecognized selector xx的错误,另外还有报了一个Unknown class XXX in Interface Builder file的错误,找了一下百度官方的资料,官方建议是app的Build Settings中的Other Linker Flags中增加-all_oad选项,但是我的app中还连接了其他静态库,加了这个选项之后,编译的时候报了 ld duplicate symbol xx的错误,于是又去苹果官网找了一下资料,发现有个类似功能的选项-ObjC,在编译选项中将-all_load改为-ObjC后,app编译和运行正 常,附上apple官方的介绍:
https://developer.apple.com/library/mac/#qa/qa2006/qa1490.html
官方的说明是app中链接的静态库中使用了Category(类别),在编译到静态库时,这些代码模块实际上是存在不同的obj文件里的。程序在连 接Category方法时,实际上只加载了Category模块,扩展的基类代码并没有被加载。这样,程序虽然可以编译通过,但是在运行时,因为找不到基 类模块,就会出现unrecognized selector 这样的错误。-all_load就是解决上述问题,类似的还可以用-force_load、-ObjC。 再附上一个相关的资料:
http://stackoverflow.com/questions/2300867/how-can-i-avoid-duplicate-symbol-errors-in-xcode-with-shared-static-libraries/2300873#2300873
如果现有的sdk 需要添加flag "-all_load" 但是添加完以后导致其他库的冲突. 解决方法是删除-all_load 用 _force_load 代替 并在后面加上必须使用-all_laod的库的路径
1. -force_load $(SRCROOT)/xxx/xxxxx.a
编译问题: "ld: duplicate symbol _OBJC_METACLASS_$_XXX..."的更多相关文章
- 编译iOS程序时的-all_load选项,以及-all_load 导致的 ld duplicate symbol xx的问题
在新的SDK环境中调试百度地图的应用程序时,app总是意外退出,找了半天发现错误的原因是unrecognized selector xx的错误,另外还有报了一个Unknown class XXX in ...
- [问题]编译报错:clang: error: linker command failed with exit code 1及duplicate symbol xxxx in错误解决方法之一
今天添加了一个新类(包括m,h,xib文件),还没有调用,-编译遇到如下错误,根据错误提示, duplicate symbol param1 in: /Users/xxxx/Library/Devel ...
- Xcode工程编译之duplicate symbol问题引发的一些知识
概括: 文件中重复定义了一个函数.变量(比如全局变量) 工程中包含同名的文件. 一般的解决方法 1 在使用import 引入头文件时,由于疏忽,误引入.m 文件. 2 同名文件放在不同的文件夹下. 3 ...
- [报错]编译报错:clang: error: linker command failed with exit code 1及duplicate symbol xxxx in错误解决方法之一
今天添加了一个新类(包括m,h,xib文件),还没有调用,—编译遇到如下错误,根据错误提示, duplicate symbol param1 in: /Users/xxxx/Library/Devel ...
- iOS 解决一个因三方静态库冲突产生的duplicate symbol的问题
最近在开发项目时编译三方.a时出现了冲突,原因是存在duplicate symbol. <1>模拟器编译时,应用的即时通讯模块采用的三方库(容联云),和视频监控模块采用的三方库(海康威视) ...
- duplicate symbol _gestureMinimumTranslation in:
在真机上编译无误,在模拟器上编译报错:duplicate symbol _gestureMinimumTranslation in: /Users/Sam/Library/Developer/Xcod ...
- duplicate symbol _OBJC_CLASS 错误处理方法
错误: ld: duplicate symbol _OBJC_CLASS_$_************ in **************** 一种可能性是你的项目的不同group里有着相同名称的类 ...
- flutter duplicate symbol '_GetDirectoryOfType' in:
ld: warning: directory not found for option '-F/Users//codingProject/vipidea-app/ios/Runner/SuperPla ...
- xcode引入第三方静态类库 duplicate symbol _OBJC_XXX 重复编译错误
xcode引入第三方静态类库 duplicate symbol _OBJC_XXX 重复编译错误 一:场景 xcode 同时引入了 libA.a, libB.a 两个静态类库,如果 这两个静态类库之中 ...
随机推荐
- 十五、css3 Filter--滤镜
如何实现下图的效果-—这里就用到了滤镜 给灰色弹框这个标签元素加“伪类”如下: #nearStoreContent .popChoose li:before { 1. z-index:; 2. pos ...
- makefile 通配符了解% $@ $^ $<
把目录下所有文件都编译的命令. 1 all:$(subst .c,.o,$(wildcard *.c)) 2 3 %.o:%.c 4 gcc -o $@ $< 下面是几个特舒符号的意思: $@: ...
- 如果Android的jar包导入错误,怎么修改呢?
如果jar包导入错误,怎么修改呢? 右键工程---->properties---->Java Build Path --->Libraries-->选择android-supp ...
- Linux下分布式项目部署环境搭建与使用(druid-1.0.25.jar)数据库连接加密
一.JDK安装 1.执行命令:cd Downloads/ 2.上 传:jdk-8u111-linux-x64.tar.gz 到Downloads 3.执行命令:tar -zxvf jdk-8u111- ...
- GIT团队合作探讨之二--Pull Request
pull request是github/bitbucket给开发人员实现便利合作提供的一个feature.他们提供一个用户友好的web界面在进代码之前来讨论这些变更. 简单说,pull request ...
- Linux 虚拟机虚拟网卡问题导致无法连接问题
问题描述 当 Linux 虚拟机启动时,通过串口输出或者启动日志, 观察到虚拟网卡启动或者初始化故障, 导致虚拟机无法连接. 问题分析 常见的超时报错范例如下: CentOS 复制 Bringing ...
- 如何让LoadRunner实现多个场景运行?
如何让LoadRunner实现多个场景运行? 发布时间: 2013-11-29 10:59 作者: stevenlee 来源: 51Testing软件测试网博客 字体: 小 中 大 ...
- Linux下配置免密登录!
ssh-keygen 产生公钥与私钥对. ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ss ...
- nginx转发配置
nginx upstream backend19050 { server 10.10.10.10:19050 max_fails=3 fail_timeout=30s; } server { list ...
- Mysql学习---全国省市区以及邮编数据库
更多下载