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的编译速度。

相关推荐
dr李四维1 分钟前
iOS构建版本以及Hbuilder打iOS的ipa包全流程
前端·笔记·ios·产品运营·产品经理·xcode
cherub.3 分钟前
深入解析信号量:定义与环形队列生产消费模型剖析
linux·c++
I_Am_Me_15 分钟前
【JavaEE进阶】 JavaScript
开发语言·javascript·ecmascript
暮色_年华17 分钟前
Modern Effective C++item 9:优先考虑别名声明而非typedef
c++
重生之我是数学王子25 分钟前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
Ai 编码助手27 分钟前
使用php和Xunsearch提升音乐网站的歌曲搜索效果
开发语言·php
学习前端的小z31 分钟前
【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
开发语言·前端·javascript
神仙别闹39 分钟前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
XINGTECODE40 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
我们的五年1 小时前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习