前段时间因为学习音视频,从网上找了些c++的代码,拷贝下来后发现编译报错。
奇怪,iostream不是c++的标准库里面的么,怎么还会找不到。
网上查了下,很多文章说是C++标准库的选择问题, 由于xcode10之后把C++标准库从libstdc++改为了libc++导致的, 在build setting 的C++ Standard Library里面修改就可以解决。 但是实操下来发现并不能解决问题,因为不知道从哪个版本开始, build setting里面就已经没有C++ Standard Library 这个选项了。
这条路不行,那就继续尝试其他方法, 有说在system header search path里面添加c++标准库的路径可以解决问题的,我试了下发现也没有用。
又有人说OC与C++混编,需要修改文件类型为m++,但是我这个文件里面没有OC的代码,改为m++肯定是没用的。但是给了我一个方向,就是尝试修改文件类型。 于是尝试修改文件类型,发现改为c++ source之后,编译成功了,看来这个问题是之前创建文件的时候选的是C,但是里面内容是C++的,编译器把c++代码当成了c的代码去编译,没有链接c++标准库导致。 为了避免后续再出错,最好是把文件的后缀名也改下,c改为cpp, h改为hpp,这样编译器就不会认错了。