ios 百度地图API HelloWord使用小结

百度API的文档,我相信有很多人第一次用时都会遇到跟我一样的问题,首先导入头文件和.a静态库时  都不知道导什么,然后去看Demo 发现里面有好多,于是我们就跟着全导进去然后就会出现i386问题,我就把我的说一下导入头文件就是inc文件中的41个类,跟libs里面的一样的,所以我们导入一个inc文件夹就好,然后libs里面有两个文件夹

每个文件夹里都有一个inc和.a静态库 这里面上面的是真机的静态库,下面的是模拟器的静态库我们可以根据自己需求选一个就行,因为电脑不会为你主动匹配。导入的方法就象API的方法一样三种方法

百度MapAPI提供了模拟器和真机两中环境所使用的静态库文件,分别存放在libs/Release-iphonesimulator和libs/Release-iphoneos文件夹下。有两种方式可以引入静态库文件:

第一种方式:直接将对应平台的.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


我特别强调的是当你遇到这样的问题时

ld: warning: directory not found for option '-L/Users/zhongyun/Desktop/项目/项目一/Push_BIanma/Push_BIanma/inc/libs/Release-iphonesimulator'
Undefined symbols for architecture i386:
  "std::terminate()", referenced from:
      ___clang_call_terminate in libbaidumapapi.a(BMKManager.o)
      ___clang_call_terminate in libbaidumapapi.a(BMKMapView.o)
      ___clang_call_terminate in libbaidumapapi.a(BMKGeometry.o)
      ___clang_call_terminate in libbaidumapapi.a(BMKOverlayView.o)
      ___clang_call_terminate in libbaidumapapi.a(BMMapViewManager.o)
      ___clang_call_terminate in libbaidumapapi.a(BaseMapScaleView.o)
      ___clang_call_terminate in libbaidumapapi.a(CompassView.o)
      ...
  "vtable for __cxxabiv1::__class_type_info", referenced from:
      typeinfo for _baidu_vi::CVArray<unsigned short, unsigned short&> in libbaidumapapi.a(BMKOverlayView.o)
      typeinfo for _baidu_vi::CVArray<_baidu_vi::_VPointF3, _baidu_vi::_VPointF3&> in libbaidumapapi.a(BMKOverlayView.o)
      typeinfo for _baidu_vi::CVArray<_baidu_vi::_VPointF3, _baidu_vi::_VPointF3> in libbaidumapapi.a(BMKOverlayView.o)
      typeinfo for _baidu_vi::CVMsgObserver in libbaidumapapi.a(AppMan.o)
      typeinfo for _baidu_vi::CVHttpEventObserver in libbaidumapapi.a(AppMan.o)
      typeinfo for _baidu_vi::CVArray<_baidu_vi::CVGpsObserver*, _baidu_vi::CVGpsObserver*&> in libbaidumapapi.a(VDeviceAPI.o)
      typeinfo for _baidu_vi::CVArray<_baidu_vi::_VPoint, _baidu_vi::_VPoint> in libbaidumapapi.a(SpatialUtil.o)
      ...
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for __cxxabiv1::__si_class_type_info", referenced from:


这就是下面注意的地方  解决办法就是把自己工程中的所有.m文件中的一个.m文件改一下后缀如:

  这样就可以了   HELLO Word 的部分 就这么多  只需导入一个inc文件夹 和 一个.a静态库  再就是改一个.m的后缀  其他的就是按API上 说的一步一步来

导入百度MapAPI中提供了定位功能和动画效果,v2.0.0版本开始使用OpenGL渲染,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework。添加方式:右键点击Xcode工程左侧的Frameworks文件夹,add->Existing Frameworks,在弹出窗口中选中这几个framework,点击add即可。

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值