XCode16中c++头文件找不到解决办法

XCode16中新建Framework,写完自己的c++代码后,提示"<string> file not found"等诸如此类找不到c++头文件的错误。

工程结构如下:

App是测试应用,BoostMath是Framework。基本结构可以参考官方demo:Mix Swift and C++ within a single framework target

按照官方文档,要启用swift和c++混编,要在App和BoostMath改为如下设置:

import到伞头文件BoostMath.h里的其他头文件也要改为public的。例如

那么要在BoostMath的Build Phase中将math_func.hpp也改为public的。

这样,如果只用c语言来写public header,就没问题了。但是如果public header需要用c++来写,那么还需要一个设置:

注意要在App和Framework中都设置这项。

这里默认是objective-c objective-c++,那样的话是无法找到c++头文件的,需要删除objective-c。猜测是混编的桥接文件是c或者oc的,在oc时代与c/c++混编的话,如果是oc文件引入c++文件也会出现c++头文件找不到的错误,目前网上出现这种问题基本都是提示是否是mm文件引用了c++文件。

====== 更新 ========

经过测试,module verifier是可以关闭的。如果我们切换到主工程或者App的设置页面,发现它默认是关闭的,只有对clang module是打开的:

关闭module verifier之后,就不用改supported languages了。并且还会大幅提升Framework的编译速度。

相关推荐
dgaf11 分钟前
【疯狂的往左】用 C 语言播放《下山》
c语言·c++
卷卷的小趴菜学编程13 分钟前
项目篇----仿tcmalloc的内存池设计(central cache篇)
c++·tcmalloc·内存池·central cache
txinyu的博客21 分钟前
解析muduo源码之 Channel.h & Channel.cc
c++
zhougl99626 分钟前
Java 枚举类(enum)详解
java·开发语言·python
yong999028 分钟前
基于势能原理的圆柱齿轮啮合刚度计算MATLAB程序实现
开发语言·matlab
仰泳的熊猫35 分钟前
题目1434:蓝桥杯历届试题-回文数字
数据结构·c++·算法·蓝桥杯
lsx20240639 分钟前
R 数组:深入探索与高效使用
开发语言
星火开发设计39 分钟前
格式化输入输出:控制输出精度与对齐方式
开发语言·c++·学习·算法·函数·知识
ygklwyf44 分钟前
模拟退火算法零基础快速入门
数据结构·c++·算法·模拟退火算法
1104.北光c°1 小时前
【黑马点评项目笔记 | 登录篇】Redis实现共享Session登录
java·开发语言·数据库·redis·笔记·spring·java-ee