遇到ld: symbol(s) not found for architecture i386的问题
按照网上的例子 打包一个静态库,出现提示 没有i386框架, 我用的模拟器,但是我打包的那个静态库是真机的静态库,所以跑在模拟器上报错。
然后我删除静态库,重新运行一个模拟器的。跑一下 正常!
什么是动态库 什么是静态库 ?
http://www.myext.cn/webkf/a_11655.html
在实际的编程过程中,通常会把一些公用函数制成函数库,供其它程序使用,一则提搞了代码的复用;二则提搞了核心技术的保密程度。所以在实际的项目开发中,经常会使用到函数库,函数库分为静态库和动态库两种。和多数人所熟悉的动态语言和静态语言一样,这里的所谓静态和动态是相对编译期和运行期的:静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要改静态库;而动态库在程序编译时并不会被链接到目标代码中,只是在程序运行时才被载入,因为在程序运行期间还需要动态库的存在。
iPhone官方只支持静态库联编。
这个连接是如何创建 动态库/静态库(xcode6下)
http://www.cocoachina.com/ios/20141126/10322.html
推荐不是用动态库,使用静态库:你可能会出现这个错误:
dyld: Library not loaded: @rpath/MyFramework.framework/MyFramework
Referenced from: /Users/woeasyhjlmac/Library/Developer/CoreSimulator/Devices/3E5E5D73-ACE7-4644-B9E4-9571F3B1569D/data/Containers/Bundle/Application/203C637D-93DF-4154-A837-A9D3FA5A0E16/TestMyUtil.app/TestMyUtil
Reason: no suitable image found. Did find:
/Users/woeasyhjlmac/Library/Developer/CoreSimulator/Devices/3E5E5D73-ACE7-4644-B9E4-9571F3B1569D/data/Containers/Bundle/Application/203C637D-93DF-4154-A837-A9D3FA5A0E16/TestMyUtil.app/Frameworks/MyFramework.framework/MyFramework: mach-o, but wrong architecture
这个错误,你只需要把
Build Setting-->Linking 下的 改成这个
MACH_O_TYPE = staticlib