Xcode 15报错:在extern "C"规范内导入C++模块'Darwin.C.time'
解决Xcode 15中“Import of C++ module 'Darwin.C.time' appears within extern "C" language linkage specification”错误
方法一:提前导入系统头文件
把可能触发C模块导入的系统头文件(比如time.h)移到extern "C"代码块之外,避免在C语言链接块内间接引入C模块。修改后的代码如下:
#include <time.h> #if defined(__cplusplus) extern "C" { #endif #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libavutil/imgutils.h> #include <libswscale/swscale.h> #include <libswresample/swresample.h> #if defined(__cplusplus) } #endif
方法二:禁用Clang模块导入功能
在Xcode的项目Build Settings中,找到Enable Modules (C and Objective-C)选项,将其设置为NO。这样会回到传统的头文件包含方式,避开模块导入和extern "C"的冲突。
方法三:拆分FFmpeg头文件的extern "C"包裹
如果前两种方法无效,可以尝试单独处理每个FFmpeg头文件:只对纯C接口的部分使用extern "C"包裹,而对于内部可能引入C代码的头文件,单独在C环境下直接包含(不过这种方式需要你对FFmpeg头文件结构有一定了解,操作相对繁琐)。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

