最近要帮忙做一个SDK,主体功能已经实现,是用C/C++编写的,所以导入这个SDK库到新项目中,程序需要有以下设置才能不会报错:
项目-Targets-Build Settings Apple LLVM 6.0 -Language-Compile Sources AS:
C++ Language Dialect 和 C++ Standard Library
这么做后,.a静态库文件都能编译通过,但是问题来了,如果项目中引用到了其它的第三方库文件,可能会产生错误,如下图所示:
就是很莫名其妙的就出现了问题,经过调试发现,原来是Compile Sources As 设置为 Object-C++所导致的,也就是说编译器开始识别C++了,而ObjectiveC部分参数识别不了,所以就各种错误了。
相信有的朋友在使用百度地图api的时候,添加lib库也会遇到类似的问题:
那么到底该如何解决呢?如果切换回According To File Type,那么lib库(SDK库)就会报错,切换成C++,部分第三方库就会出差,该怎样混编兼容呢?接下来我给出一种方案,具体如下:
1,Compile Sources As 切换回According to File Type,这样能保证其它的第三方库、以及之后可能添加的不同类型源码文件都没有问题,我们以文件类型来动态编译(也就是说是oc文件,就用oc编译,是C++文件,就以C++编译)
2,在新项目中,把AppDelegate或是引用到lib库的那个文件或是任意一个文件后缀修改成.mm,这样,系统编译时就可以识别到C++了,我们自己的lib库也不会出错了~
【PS:如果AppDelegate中有其它调用,修改成.mm后缀会引起错误,那么就修改其它的文件】
3,此时在运行项目,是不是都没问题了?第三方库也不会报错了(跟Compile Sources As有关),我们自己的lib库、SDK也不会报错了~
注意事项
1.静态库中如果有采用ObjectC++实现,那么需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一 个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将XCode的Project -> Edit Active Target -> Build Setting-> GCC4.2 - Language -> Compile
Sources As设置为"Objective-C++"
2.如果您只在Xib文件中使用了目标lib库(比如BMKMapView),没有在代码中使用它(BMKMapView),编译器在链接时不会链接对应符合,需要在工程属性中显式设定:在XCode的Project -> Edit Active Target -> Build -> Linking ->
Other Linker Flags中添加:-ObjC
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
The Objective-C language defers as many decisions as it can from compile time and link time to runtime. Whenever possible, it does things dynamically. This means that the language requires not just a ...
compile-node-sass,编译sass/scss为css。
GCC stands for “GNU Compiler Collection”. GCC is an integrated distribution of compilers...Objective-C, Objective-C++, Java, Fortran, and Ada. The abbreviation GCC has multiple meanings in common use!
微信只能开发平台http://pr.weixin.qq.com/,里面包含了微信语音和图像,...Compile Sources As: Objective-C++ 或 将使用 SDK 的文件扩展名改为.mm 随便把一个文件后缀改成.mm不然会报错 3.添加代码 #import Cust
编译时正则表达式v3 快速的编译时正则表达式,支持在编译时或运行时进行匹配/搜索/捕获。 您可以使用目录single-header的单头版本。 可以使用make single-header重新生成此make single-header 。 如果使用cmake,则...
光盘中附上了两份程序代码文件,android-under_1.1SDK_Compile目录下的程序可以直接在1.1环境下运行,而android-under_1.5SDK_Compile目录下的程序可以直接在1.5环境下运行: 1. android-under_1.1SDK_Compile目录...
opencv-4.0.0-world-compile-msvc15-vs2017-x64-python3.6.5-Release.zip 自己编译的,opencv4.0.0 带contrib,python3.6.x;带python例子. 人脸识别,机器学习等 。如果报错,请检查是否安装vc 2017的运行库, 在...
orb-slam2-compile-ok-opencv-ok-include-lib
python库,解压后可用。 资源全名:pip_compile_multi-1.5.0-py2.py3-none-any.whl
个人应对js-conditional-compile-loader官方依赖包升级导致的bug而出的包
使用C++代码封装的win32操作类, 与MFC相似,对于学习SDK与C++是巨好的参考 Tutorials Menu of tutorials Tutorial 1: The Simplest Window Tutorial 2: Using Classes and Inheritance Tutorial 3: Using ...
前端开源库-post-compile-webpack-plugin编译后的Webpack插件,编译完成后运行代码。
This is the definitive book for all C++ software professionals involved in large development efforts such as databases, operating systems, compilers, and frameworks. It is the first C++ book that ...
maven-compile-plugin-1.4.0-incubating.jar
打印编译日期 如:Software Compile Date :2023-09-06 14:04:18
光盘中附上了两份程序代码文件,android-under_1.1SDK_Compile目录下的程序可以直接在1.1环境下运行,而android-under_1.5SDK_Compile目录下的程序可以直接在1.5环境下运行: 1. android-under_1.1SDK_Compile目录...
embedded linux kernel 2.6 update tool compile-pass under gcc @ redhat
How to compile Windows Server 2003-bO0daYbti5g.mkv windows server 2003操作系统源代码构建指南视频教程
The iOS SDK 447 Your First iPhone Application 447 Creating a New iPhone Application Project Entering Your Code 452 Designing the Interface 455 443 449 An iPhone Fraction Calculator 461 Starting the ...
正则表达式笔记(re.search/re.match/re.split/re.compile/用法) - douzujun - 博客园博客园首页新随笔联系订阅管