为什么在我的 Swift 应用程序项目中使用桥接头导入 C++ 库时找不到 iostream?

问题描述 投票:0回答:1

我一直在我的 Swift 应用程序项目中使用用 C 编写的库,通过 Objective-C 桥接头导入它。

该库被编译成“.a”文件,我可以通过链接头文件来使用它。

我尝试使用相同的方法链接一个已用 C++ 重写的库,但遇到了一个问题:“找不到‘iostream’文件。”

我们内部库团队创建的测试 Objective-C 应用程序项目中不会出现此问题。然而,与 Swift 集成时,iostream 出现了问题。

#ifndef ddddd_Bridging_Header_h
#define ddddd_Bridging_Header_h

#import "../../lib/testlib.h"

#endif

我的桥接头文件

无法发出预编译标头 '/Users/kimjitae/Library/Developer/Xcode/DerivedData/ddddd-glmnoqrwdrgarrjulxjmalpyikr/Build/Intermediates.noindex/PrecompiledHeaders/ddddd-Bridging-Header-swift_3O89L0OXZ0CPD-clang_188AW1HK8F0Q3.pch'桥接标头 '/Users /kimjitae/Desktop/enf4/ddddd/ddddd/ddddd-Bridging-Header.h'

桥接标头错误

“iostream”文件未找到

库错误

c++ ios swift
1个回答
0
投票

问题的出现是因为 Swift 本身不支持像

iostream
这样的 C++ 头文件。您将需要使用 Objective-C++ 进行集成。尝试将桥接头文件的文件扩展名从
.m
更改为
.mm
以启用 Objective-C++ 支持,从而允许使用 C++ 库。确保 C++ 标准库也在您的 Xcode 项目设置中正确链接。

© www.soinside.com 2019 - 2024. All rights reserved.