xcode 中 c++ Standard Library的选择 和 如何混编c++
2016-05-12 19:05
3079 查看
1. 如何混编c++
用 Xcode4 创建一个 工程,如果在任意一个文件AAA.h的头部加入
#include<string>
using namespace std;
编译运行,就会发现,编译不通过,提示为:
'string' file not found
原因就是文件后缀应该从.m改为.mm,这样就支持 c++混编了,必须将引用到c++混编的AAA.h的所有文件后缀都改为.mm,否则还是会编译不过。所以,为了保险,我一般将所以的文件后缀都全部改为.mm.
2. c++ Standard Library的选择
如果你在 summary 中 的Deployment Target 中选择了4.3,而不是XCode默认的6.0,那么你在 混编C++的时候还可能会遇到另外一个错误:
clang: error: invalid deployment target for -stdlib=libc++ (requires
iOS 5.0 or later)
clang failed with exit code 1
原因是 XCode 的 Build Setting中 的 C++ Standard Library默认选择了
libc++ (LLVM C++ standard library with c++11 support)选项,这个表示支持c++11的最新特新,
但是它只支持ios5以上,所以如果要使用这个选项,有两个选择:
第1个选择就是 将Deployment Target中 改为5.0以上,一般不会这样,因为我们一般想支持的sdk越低越好,尽量支持低版本的ios设备。
第2个选择就是 将这个 C++ Standard Library选项改为 libstdc++ (GNU c++ standard library ),它支持最低到4.3 .
用 Xcode4 创建一个 工程,如果在任意一个文件AAA.h的头部加入
#include<string>
using namespace std;
编译运行,就会发现,编译不通过,提示为:
'string' file not found
原因就是文件后缀应该从.m改为.mm,这样就支持 c++混编了,必须将引用到c++混编的AAA.h的所有文件后缀都改为.mm,否则还是会编译不过。所以,为了保险,我一般将所以的文件后缀都全部改为.mm.
2. c++ Standard Library的选择
如果你在 summary 中 的Deployment Target 中选择了4.3,而不是XCode默认的6.0,那么你在 混编C++的时候还可能会遇到另外一个错误:
clang: error: invalid deployment target for -stdlib=libc++ (requires
iOS 5.0 or later)
clang failed with exit code 1
原因是 XCode 的 Build Setting中 的 C++ Standard Library默认选择了
libc++ (LLVM C++ standard library with c++11 support)选项,这个表示支持c++11的最新特新,
但是它只支持ios5以上,所以如果要使用这个选项,有两个选择:
第1个选择就是 将Deployment Target中 改为5.0以上,一般不会这样,因为我们一般想支持的sdk越低越好,尽量支持低版本的ios设备。
第2个选择就是 将这个 C++ Standard Library选项改为 libstdc++ (GNU c++ standard library ),它支持最低到4.3 .
相关文章推荐
- MOOC北京理工《C语言程序设计(上)》第6周第3题:邮票组合
- C++ Primer 学习笔记_108(大结局!!!)_特殊工具与技术 --固有的不可移植的特征[下]
- C++ Primer 学习笔记_107_特殊工具与技术 --固有的不可移植的特征[上]
- C++ Primer 学习笔记_106_特殊工具与技术 --局部类
- C++ Primer 学习笔记_105_特殊工具与技术 --联合:节省空间的类
- C++ Primer 学习笔记_104_特殊工具与技术 --嵌套类
- C++Primer学习笔记103 特殊工具与技术 类成员指针
- C++ Primer 学习笔记_102_特殊工具与技术 --运行时类型识别[续]
- C++ Primer 学习笔记_101_非一般工具与技术 -运行时类型识别
- C++ Primer 学习笔记_100_特殊工具与技术 优化内存分配[续2]
- C++ Primer 学习笔记_99_非一般工具与技术 -优化内存分配[续1]
- C++ Primer 学习笔记_98_非一般工具与技术 -优化内存分配
- C++ Primer 学习笔记_97_用来大型程序的工具 -多重继承与虚继承[续2]
- C++ Primer 学习笔记_96_用以大型程序的工具 -多重继承与虚继承[续1]
- C/C++ 中生成特定范围内的随机数
- C++ Primer 学习笔记_95_用来大型程序的工具 -多重继承与虚继承
- C语言封装线程与日志类
- C C++编程产生指定范围内的随机数
- 编译4.7.2的gcc的针对libstdc++的configure解读
- 顺序队列C/C++实现