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

相关推荐
智航GIS4 小时前
ArcGIS Python零基础脚本开发教程---1.1 Describe 函数
开发语言·python·arcgis
云游云记4 小时前
php 网络请求工具全解:cURL 与 Guzzle 总结
开发语言·网络·php
m0_748229994 小时前
帝国CMS后台搭建全攻略
java·c语言·开发语言·学习
weixin_462446234 小时前
PaddleX 3.2 人脸识别实战:自定义人脸库 + CartoonFace 官方案例 Top-K 识别完整指南
开发语言·r语言
Testopia4 小时前
走一遍 AI 学习之路 —— AI实例系列说明
开发语言·人工智能·python
Tony Bai4 小时前
【分布式系统】11 理论的试金石:用 Go 从零实现一个迷你 Raft 共识
开发语言·后端·golang
Beginner x_u4 小时前
JavaScript 原型、原型链与原型继承的核心机制解析
开发语言·javascript·原型模式·原型原型链
离离茶4 小时前
【笔记1-11】Qt 关闭QToolbar的拓展菜单
开发语言·笔记·qt
曹牧4 小时前
C#:窗体构造函数无法引用窗体控件
开发语言·c#
xb11324 小时前
C#使用Cancellation来取消异步任务
开发语言·c#