打静态库所出现的问题以及解决方法

1.静态库中包含了Category(分类)

如果静态库中包含了Category,有时候在使用静态库的工程中会报“方法找不到”的错误(unrecognized selector sent to instance

解决方案:在使用静态库的工程中配置Other Linker Flags为-ObjC

2.IOS编译报错:objc-class-ref in AppDelegate.o之解决方案

|2015-01-23 09:50 |14695人阅读

xcode6.0升级到xcode6.1后,程序编译报错,错误如下:这是个很常见的错误,很多项目在更换xcode版本后,都会出现类似的问题。

Undefined symbols for architecture x86_64:

"_OBJC_CLASS_$_QQApiInterface", referenced from:

objc-class-ref in AppDelegate.o

"_OBJC_CLASS_$_ShareSDK", referenced from:

objc-class-ref in AppDelegate.o

objc-class-ref in RecipeDetailViewController.o

objc-class-ref in showViewController.o

objc-class-ref in video_show.o

"_OBJC_CLASS_$_TencentOAuth", referenced from:

objc-class-ref in AppDelegate.o

"_OBJC_CLASS_$_WXApi", referenced from:

objc-class-ref in AppDelegate.o

"_OBJC_CLASS_$_WeiboApi", referenced from:

objc-class-ref in AppDelegate.o

"_OBJC_CLASS_$_YXApi", 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)

解决方案:

Xcode升级到6.1.1 默认让所有App都通过64位编译器编译。原来在Xcode6.0的时候默认的Architectures只有(arm7,armv7s),到6.1.1默认就带上arm64的参数了。

把build active architectures only 改为 NO。

2. 把最下面的Valid Architectures中的arm64参数删掉就可以了

或者:

双击Architectures,选择other,删除$(ARCH_STANDARD),然后增加armv7和armv7s(写上:$(ARCHS_STANDARD_32_BIT))。

3.clean 再build。

结果设置如下图:

目前设置完成后,问题顺利解决,大家有更好的解决方案,欢迎讨论!

时间: 2024-10-14 03:51:24

打静态库所出现的问题以及解决方法的相关文章

OC静态库里NSClassFromString得到nil的解决

如果你在静态库中有从类名反射回类的代码, 如下: NSString *myClassStr = @"myClass"; Class myClazz = NSClassFromString(myClassStr); if (myClazz) { id myClassInit = [[myClazz alloc] init]; } 有时候(经常)会出现得到了Class为nil的情况, 网上搜索, 一般是这么说的: The class object named by aClassName,

PHP使用GD2库画图,图像无法输出解决方法

在CS6编辑环境下,使用php的GD2库绘制图像,在浏览器上输出可能会出现图像无法输出的情况,目前发现两个解决方法:方法1:用记事本写,再另存为utf-8 no bom的格式. 方法2:在代码中添加ob_clean()函数,清空(擦掉)输出缓冲区. 代码如下: <?php //用其他编辑器打开存储为utf-8 no bom ob_clean();/* 清空(擦掉)输出缓冲区,不加此行可能无法显示图像*/ $height=600; $width=600; //创建一个图像标识符 $im=image

在VS中使用Boost库出现Macro redefinition错误的解决方法(warning C4005)

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

手势识别与事件库 Touch.js若干问题及解决方法

Touch.js是移动设备上的手势识别与事件库, 由百度云Clouda团队维护,也是在百度内部广泛使用的开发工具. Touch.js的代码已托管于github并开源,希望能帮助国内更多的开发者学习和开发出优秀的App产品. Touch.js手势库专为移动设备设计, 请在Webkit内核浏览器中使用. 极速CDN <script src="http://code.baidu.com/touch-0.2.14.min.js"></script> Examples /

Eclipse中jvm运行库的Access restriction问题的解决方法

今天在写代码的时候遇到了jre system libraries的访问限制问题,该库是jvm运行的依赖库rt.jar,解决方案如下: 步骤: (1)项目右击,出现Build Path,点击进入Java Build Path配置,点击Libraries中的JRE Syatem Library,如下图所示: (2)点击Access rules,可自定义jvm运行库的访问规则,如下图所示: (3)点击上图中的Add添加访问规则,添加如下图所示: (4)点击ok,这时jvm的访问规则就添加好了 现在,就

ajax.googleapis.com等公共库加载被“墙”的解决方法!

今天打算在stackoverflow上注册账号提些问题:结果不管怎么样都无法sign up上去,点击按钮没有反应,最后通过打开chrome调试发现stackoverflow有访问到"ajax.googleapis.com"的jquery.js资源,由于google已经完全被墙了,所以这个页面也就无法正常的执行JS脚本. 在网上查找到一个解决方案,不用翻墙,通过chrome的插件拦截地址将地址替换成国内的CDN库:感觉还是挺方便的: chrome插件对应的源代码地址:https://gi

【转】iOS静态库 【.a 和framework】【超详细】

原文网址:https://my.oschina.net/kaqijiang/blog/649632 一.什么是库? 库是共享程序代码的方式. 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种.iOS中的静态库有 .a 和 .framework两种形式:动态库有.dylib 和 .framework 形式,后来.dylib动态库又被苹果替换成.tbd的形式. 二.静态库与动态库的区别? 静态库: 链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝.

iOS开发之静态库(一)—— 基本概念

在项目开发过程中,经常出现优秀代码重用现象,又或者提供给第三方功能模块却又不想让其看到源代码,这些时候,通常的做法是将代码封装成库或者框架,这些在Windows编程或Linux编程中非常容易实现的过程,在iOS开发中却遇到了麻烦,原因是:苹果公司禁止在iOS开发中使用动态库(而苹果自己却可以使用动态库),同时,苹果也从Xcode中移除了创建静态框架的功能.值得庆幸的是我们可以通过对Xcode进行小小的改动来创建静态框架,而静态库和静态框架是被App Store所允许的,其实静态框架本质上说也是静

iOS解决两个静态库的冲突 duplicate symbol

http://blog.163.com/023_dns/blog/static/118727366201391544630380/ 场景: 解决TencentOpenAPI.framework与ZbarSDK中  _base64_encode 函数的冲突 后来在网络上搜寻,删除掉 Other Linker Flag 的 -all_load 就可以解决静态库冲突的问题, 但是这样做的话,会使一些外部的静态库,使用objc扩展函数(catagory)的方法失效.例如BaiduMapApi 如果是有些