使用 Objective-C 中的 FFmpeg XCFramework,找不到标头

Consume FFmpeg XCFramework from Objective-C, headers not found

提问人:jamone 提问时间:3/18/2020 更新时间:11/19/2020 访问量:1722

问:

我为 Apple 的平台构建了 FFmpeg 作为 XCFramework。我使用了 https://github.com/kewlbear/FFmpeg-iOS-build-script/pull/147 中的脚本来做到这一点。

我现在尝试在传统的 iOS/macOS 框架(名为 VideoEditing)中使用该框架,然后在我的 iOS 应用程序中使用该框架(即将尝试成为 Catalyst)。

在我已链接到应用程序中,然后在使用我的应用程序中已链接并嵌入。以前,我将 FFmpeg 构建为一个标准的静态库,并在 Objective-C++ 包装器中使用它,这样我就可以在 Swift 中使用它。VideoEditingFFmpeg.xcframeworkVideoEditingFFmpeg.xcframeworkVideoEditing

在那个 Objective-C++ 文件中,我会导入 FFmpeg 标头,例如 要做到这一点,我必须设置标题搜索路径。转换为 XCFramework 后,您应该如何操作?我试过 , , 以及 .在每种情况下,我都会在网上遇到错误。#import <libswscale/swscale.h>@import FFmpeg#import <FFmpeg/libswscale/swscale.h>#import <FFmpeg/swscale.h>#import <libswscale/swscale.h>file not foundimport

Apple 的所有示例都只是在 Swift 中展示了它,框架提供了一个模块。如果我尝试仍然设置标头搜索路径,那么现在每个体系结构都有不同的标头。

Overview of contents of XCFramework

objective-c xcode ffmpeg 链接器错误 xcframework

评论

0赞 fbrereto 7/28/2020
我遇到了同样的问题,但使用的是 Firebase/Crashlytics SDK 的 6.28.2 版本。所以这个问题不仅限于FFmpeg。

答:

0赞 Adeel Ur Rehman 4/26/2020 #1

尝试并设置为从生成设置。确保将其设置为@import FFmpegEnable Modules (C and Objective C)YESLink Frameworks AutomaticallyYES

评论

0赞 jamone 4/27/2020
我已经尝试过 ,并且我已经启用了。在这种情况下它不起作用,因为 FFmpeg 框架与“普通”框架不同,因此它不构建模块,因此没有要导入的模块。@import FFmpegEnable Modules (C and Objective C)
0赞 Meler Paine 11/19/2020 #2

您需要将头文件与 xcframework 并行放置,并将头搜索路径设置为该头文件。xcframework 就像一个 .a 文件,Xcode 不会在 xcframework 中搜索标头。