iOS 百度地图 有关OC和C++混编造成其它类错误的问题(Compile Sources As Objective-C++)

       项目导入百度地图SDK在配置环境出现错了,在这记录一下

       相信有的朋友在使用百度地图api的时候,添加lib库也会遇到类似的问题, 百度提供两种方法:(静态库中采用Objective-C++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即在Xcode的Project-> Edit Active Target -> Build Setting 中找到 Compile Sources As,并将其设置为"Objective-C++")

百度地图SDK 是用C/C++编写的,所以导入这个SDK库到新项目中,程序需要有以下设置才能不会报错

如果设置  Compile Sources As 为Objective-C++

iOS 百度地图 有关OC和C++混编造成其它类错误的问题(Compile Sources As Objective-C++)_第1张图片
Compile Sources As 为Objective-C++

.a静态库文件都能编译通过,但是问题是,如果项目中引用到了其它的第三方库文件,可能会产生错误,如下图所示:

iOS 百度地图 有关OC和C++混编造成其它类错误的问题(Compile Sources As Objective-C++)_第2张图片
其他第三方报错

解决方法就是:

1,在Xcode的Project-> Edit Active Target -> Build Setting 中找到 Compile Sources As,切换回According to File Type,这样能保证其它的第三方库、以及之后可能添加的不同类型源码文件都没有问题.

2,使用百度地图提供的第二种, 保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm)

这样就OK了

如果你只是用百度地图没有使用其他.a静态库, 那就没有这个问题,其他使用是用C/C++编写的编写的SDK 应该也会有同样的问题.

你可能感兴趣的:(iOS 百度地图 有关OC和C++混编造成其它类错误的问题(Compile Sources As Objective-C++))