先说明下:
我使用的是Xcode4.5+IOS6.0
为了把一些东西封装好,我自己弄了个静态库,编译啥都通过了,将模拟器下编译出来的.a库文件在其它工程(A)中引用,可以正常使用(模拟器情况下正常)。
可是把真机下编译出来的.a库文件在其它工程中引用,真机情况下就编译不过了。
报错:Undefined symbols for architecture armv7:
"_WebRtcIlbcfix_DecoderCreate", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_EncoderFree", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_Decode", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_DecoderInit", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_DecodePlc", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_Encode", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_EncoderCreate", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_DecoderFree", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_EncoderInit", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)我在终端查看了,sxLibDial.a是armv7的。
求教各位,真机下应该如何编译和使用静态库?
先谢谢各位啦~~~~~
我使用的是Xcode4.5+IOS6.0
为了把一些东西封装好,我自己弄了个静态库,编译啥都通过了,将模拟器下编译出来的.a库文件在其它工程(A)中引用,可以正常使用(模拟器情况下正常)。
可是把真机下编译出来的.a库文件在其它工程中引用,真机情况下就编译不过了。
报错:Undefined symbols for architecture armv7:
"_WebRtcIlbcfix_DecoderCreate", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_EncoderFree", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_Decode", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_DecoderInit", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_DecodePlc", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_Encode", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_EncoderCreate", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_DecoderFree", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
"_WebRtcIlbcfix_EncoderInit", referenced from:
CMedia::Process(void*) in sxLibDial.a(media.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)我在终端查看了,sxLibDial.a是armv7的。
求教各位,真机下应该如何编译和使用静态库?
先谢谢各位啦~~~~~
解决方案 »
- pthread在等待线程结束时,怎么样不影鼠标键盘等事件的响应
- iPhone向服务器端传文件
- uiwebview 显示html问题!!
- object-c中@是什么意思,有什么作用
- 小弟刚学 ios 开发需要一个iOS SDK 5.1 真正可下载地址?
- 国内iphone/ipad主流用的是哪个版本的ios?
- 请教ARC上面的KeyWindow只能被全局变量所遇到的相应的问题
- IOS 限制IPad不能下载使用
- 急求转码。\u4e0a\u4f20\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5\uff01
- 有谁知道怎么横向显示pdf吗??
- 如何设置某个视图在设备方向为纵向时,该试图仍为横向的呢
- 点击按钮时改变tableview中其中一行的文本
是armv7编译出来的库。
sxLibDial是依赖了另外一个库,我在sxLibDial里面引用了那个库(A)。<我以为可以这样可以把它们两个整成一个>
之后我在我的工程里加入了那个库A,然后就编译通过了。
不过,现在还是有一个疑问:为什么i386编译出来的就不用再引用库A可以直接使用,
而armv7编译出来的库,还需要再引用库A呢?
而且库A比较大,但报错的内容只涉及一个文件里的内容。
我再用真机下编译出来的.a文件替换之前的那个模拟器编译出来的.a文件进行测试的。不过,不排除中间有其它因素影响,所以准备重新开始弄一次。
现在还有一点小小的问题是,真机下不支持armv7s,编译就报错。我在制作静态库时,后面是加了armv7s的。
但还是不行。不知道要如何制作可以兼容armv7s的静态库。求解
嘻嘻
首先,你要确定你包含的另一个SDK是不是i386和armv7两种架构都支持。
其次,把另一个SDK加到你的库里面,这里有可能会涉及路径之类的。这一步不能搞混了。
最后,编译通过你的库,看你是选模拟器编译出来的还是真机编译出来的。
模拟器编译出来的只能用于模拟器,真机编译出来的只能用于真机。
你可以用 lipo -info XXX.a 查看它是i386还是armv7.
如果你想整出一个通用的库的话,可以使用命令 lipo -create A.a B.a -output AB.a
这样AB.a就是真机和模拟器上都可以用的了。对了,最后一点,你的SDK里面需要包含的其它系统库在你使用的工程里面都得加上去才行