【发布时间】:2016-07-28 11:00:08
【问题描述】:
我正在尝试在 Visual Studio 2013 C++ 软件中使用 ffmpeg(最终作为 OpenCV 项目的一部分)——但现在我只是想获得基本的 FFMPEG 功能。通常,在 Visual Studio 中构建时,我使用多线程 DLL 运行时库构建 64 位软件。我已经使用http://ffmpeg.org/platform.html#Windows 的“使用 ... MinGW-w64 进行本机 Windows 编译”的一般说明构建了 ffmpeg(我在下面提供了一组更详细的步骤...)。
在我的系统上构建 ffmpeg 软件后,我尝试在 Visual Studio 2013 中创建一个简单的“hello world”项目。具体来说,我尝试实现http://dranger.com/ffmpeg/tutorial01.html 提供的初始教程文件。在构建项目时,我收到错误:
c:\msys64\usr\local\ffmpeg\libavutil\common.h(45): 致命错误 C1083: 不能 打开包含文件:'libavutil/avconfig.h':没有这样的文件或目录
以下是我构建 ffmpeg 和创建基本 Visual Studio 项目的详细步骤:
============ 构建ffmpeg ===============
- 从http://msys2.github.io下载并安装msys2-x86_64-20160205.exe
- 运行
update-core以更新 Msys2 安装 - 跑
pacman -Suu(两次)完成更新(按照有关更新快捷方式等的说明进行操作) - 然后我退出 MSys2 shell 并打开 MinGW-w64 Win64 Shell。在这个新外壳中:
- 使用
pacman -S <package-name>安装了以下包我安装的包列表是:make、pkg-config、diffutils、mingw-w64-x86_64-yasm、mingw-w64-x86_64-gcc、mingw-w64-x86_64-SDL , 混帐 - 然后我进入
cd /usr/local - 跑
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg - 我想构建这个 MSys64 文件夹的 ffmpeg 库“树外”。因此,在我的 Windows 机器的常规文件系统中,我在 C:\ffmpeg 创建了一个文件夹
- 回到 Win64 Shell,我 cd'd 到这个新文件夹:
cd /c/ffmpeg - 然后跑
/usr/loca/ffmpeg/configure --enable-shared - 然后
make -r - 最后是
make install
现在,如果我不得不猜测,我的“缺陷”就在我调用 ffmpeg 的“配置”脚本时使用的选项中。我是否需要使用特定选项才能获取此处构建的 ffmpeg 库并将它们用作 Visual Studio 中的动态 (DLL) 库?
========== 配置我的 Visual Studio 项目 ============
这是我在 Visual Studio 中创建一个简单的 hello world 项目以查看 ffmpeg 是否正常工作的方法。
- 我在 Visual Studio 2013 中创建了一个新的 Visual C++“空项目”
-
然后我将项目属性配置如下:
一个。在 C/C++ => General => Additional Include Directories 中,我放了
C:\msys64\usr\local\ffmpeg
b.在 Linker=>General => Additional Library Directories 中,我指向了每个已构建的库文件夹(基本上我指向所有已构建的库,以确保我不会无意中错过关键的库) .名单如下:
- C:\ffmpeg\libavcodec
- C:\ffmpeg\libavdevice
- C:\ffmpeg\libavfilter
- C:\ffmpeg\libavformat
- C:\ffmpeg\libavutil
- C:\ffmpeg\libswresample
- C:\ffmpeg\libswscale
- C:\ffmpeg
c。在 Linker=> Input => Additional Dependencies 中,我指向了特定的库(同样——我指向了所有存在的库)。名单是:
- avcodec.lib
- avdevice.lib
- avfilter.lib
- avformat.lib
- avutil.lib
- swresample.lib
- swscale.lib
然后我创建了一个名为“tut01.c”的新源文件,并从http://dranger.com/ffmpeg/tutorial01.c复制/粘贴了代码
- 然后按 F7 并得到上面指定的关于找不到 avconfig.h 的错误
以上是我对在 Windows(顺便说一句,它是 Windows 10、64 位)和 Microsoft Visual Studio 2013 中工作所需遵循的步骤的最佳猜测。我应该改变什么来获得这个基本程序构建并运行?
【问题讨论】:
-
如果找不到头文件,编译器会抱怨包含目录有问题。目前与链接器或外部库无关。所以去项目属性页 -> 配置属性 -> VC++ 目录 -> 包含目录,添加你的标题目录。
-
@halfelf 感谢您的提示。问题是(我应该在我的帖子中提到这一点)我的 libavutil 文件夹中不存在 avconfig.h 标头。这就是为什么我认为我错误地配置了 ffmpeg 构建。
-
我明白了,很抱歉没有仔细阅读。在这种情况下,您可以简单地从 ffmpeg 源目录中找到并将其复制到应有的位置。但是,传统上,我们使用“--prefix=dir”选项配置这些库,以便所有库和头文件在构建后都在前缀目录中。
标签: c++ visual-studio-2013 ffmpeg