百度地图的引入 Undefined symbols for architecture i386: "_OBJC_CLASS_$_BMKMapManager"

百度地图的引入:

官方推荐的三种方法: 

第一种方式:直接将对应平台的.a文件拖拽至XCode工程左侧的Groups&Files中,缺点是每次在真机和模拟器编译时都需要重新添加.a文件;

第二种方式:使用lipo命令将设备和模拟器的.a合并成一个通用的.a文件,将合并后的通用.a文件拖拽至工程中即可,具体命令如下:

lipo –create Release-iphoneos/libbaidumapapi.a Release-iphonesimulator/libbaidumapapi.a –output libbaidumapapi.a

第三种方式:

1.将API的libs文件夹拷贝到您的Application工程跟目录下

2.在XCode的Project -> Edit Active Target -> Build -> Linking -> Other Linker Flags中添加-ObjC

3.设置静态库的链接路径,在XCode的Project -> Edit Active Target -> Build -> Search Path -> Library Search Paths中添加您的静态库目录,比如"$(SRCROOT)/../libs/Release$(EFFECTIVE_PLATFORM_NAME)",$(SRCROOT)宏代表您的工程文件目录,$(EFFECTIVE_PLATFORM_NAME)宏代表当前配置是OS还是simulator

注:静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将XCode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为"Objective-C++"

这三种方法我配置完了发现最终就是一种方法

第一种方法拖入.a文件到Xcode这跟第二种合并一起是一样的

再百度2.1.1里面的Demo有一个已经合并好的.a文件直接拖到应用就好了

不用再调用lipo合并两个.a文件(省事)

我刚开始以为第三种方法是要将那些静态库路径的文件一并拖入工程目录下

发现总是报错找不到目录

Undefined symbols for architecture i386:   "_OBJC_CLASS_$_BMKMapManager", referenced from:

ld: library not found for -lbaidumapapi

各种奇葩的问题!!!

后面把百度所有.a和静态库都上了,重新做了一边如下:

我建议看看百度那个demo的文件架构:

inc: 文件夹   此文件就是我们为何一直报错找不到BMKMapManager的原因

第一步把创建group把demo里面的inc文件列表拷贝进来

第二部把demo里面合并好的.a文件和mapapi.bundle(图片资源库)拉进来

第三部设置target里面的build settings下的search paths

设置路径有一种绝对路径和相对路径啦

$(SRCROOT) (工程目录)

Release$(EFFECTIVE_PLATFORM_NAME) (存放模拟器和正式环境不用的静态库)

需要注意的是这里的静态库文件是一种引用,千万不要他这些lib下的文件放到工程目录下,只要seach paths引用就好了

-[__NSCFString stringFromMD5]: unrecognized selector sent to instance 0xb56f4b0

这个错误是other linker flags要设置一下 other linker  flags 添加 -all_load参数

 Project ->build settings ->linking->Other Linker flags

这点挺重要的: 如果使用Xcode5开发基于iOS7的百度地图应用时,请将Xcode5的Project -> Edit Active Target -> Build -> Linking -> Other Linker Flags中的“-ObjC”修改为“-all_load”

 
注意一下百度地图不能显示查看Bundle identifier和Key是否正确,如果BMKMapView初始化报错 mapapi.bundle这个资源文件没有加入进来。 OK 。。。大概就这样吧,百度太水了IOS7 64位暂时还不兼容....

猜你喜欢

转载自tsyouaschen.iteye.com/blog/2021174