因为又一个IOS项目要用到Eigen这个C++库,把.m文件改成.mm文件,总算是可以在OC代码中写C++代码了,先写了几句C++代码试了试,结果编译却不通过,一直因为Eigen/Core文件里的
#ifdef EIGEN_EXCEPTIONS
#include <new>
#endif
这一行了,说是找不到new这个文件。我单独写了一个cpp文件,里面#include ,用clang编译,结果却没有报错。所以我认为是xcode的编译选项的事,网上找了找,发现OC和C++混编的时候,需要把BuildSettings里的Complie Source As选项Objective-C++,而不是默认的According to File Type。如果是According to File Type,最后就当成OC文件来编译,那么头文件搜索路径肯定没有C++的头文件路径了,所以就会报错了。在这里记下来,防止以后忘了。