Xcode 15编译错误:C++模块“zlib”的导入出现在外部“C”语言链接规范中

ugmeyewa  于 2023-10-16  发布在  其他
关注(0)|答案(3)|浏览(329)

我试图用Xcode 15 RC编译一个现有的项目,该项目使用了一些内部使用zlib的依赖项。
zlib.h使用

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _ZLIB_H
#include "zlib.h"
#endif
...

我得到这个错误:Import of C++ module 'zlib' appears within extern "C" language linkage specification
在Xcode 14上一切都很好。zlib现在是c++库吗?
我可以将包含移出extern "C"范围,但我的POD依赖失败,我无法控制它们,我可以尝试使用cocoapods-patch,但我想知道是否有更简单的方法来解决这个问题。

j13ufse2

j13ufse21#

extern "C" {是一个C功能,在C中无效,该块中的其他代码应该是C。
zlib. h有自己的extern "C" {,当你在extern "C" {中包含zlib. h时,你会得到嵌套的extern "C" {,编译器会警告你:C
代码符合预期的C代码。
不要在extern "C" {块中包含zlib. h,将最后一个包含的内容移到后面。

63lcw9qa

63lcw9qa2#

去掉所有这些,以及...中的右括号#ifdef。将其简单地替换为:

#include "zlib.h"

zlib. h已经 * 有 * include guard和extern "C"了。

wsxa1bj1

wsxa1bj13#

如果取消选中以下选项,则可以隐藏错误:

Xcode > Build Settings > Apple Clang Module Verifier - Options > Enable Module Verifier

相关问题