【问题标题】:Building with Visual Studio 2010, MFC, and FFmpeg使用 Visual Studio 2010、MFC 和 FFmpeg 构建
【发布时间】:2012-12-25 12:38:53
【问题描述】:

我正在使用 FFmpeg 和 SDL 在 Visual Studio 2010 中构建 Windows MFC 应用程序。但是,在从头开始创建 MFC 项目并包含 FFmpeg 开发库(avcodec.lib、avdevice.lib、avformat.lib 等)后,我无法构建项目。我正在使用来自Zeranoe FFmpeg 的开发版本。我在项目属性中配置了以下内容:

  1. 设置 VC++ 目录 -> 包含目录(添加了 FFmpeg “包含”目录)
  2. 设置 VC++ 目录 -> 库目录(到 FFmpeg“lib”目录)
  3. 设置链接器 -> 输入 -> 附加依赖项(包括 avcodec.lib 等)

不管怎样,当我从 VC++ 目录 -> 包含目录中省略 FFmpeg 的“include\libavutil”包含时,构建成功。

以下是我收到的一些第一个构建错误(我不会全部发布,因为它很长)。任何帮助将不胜感激。

ClCompile: stdafx.cpp

c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\atltime.h(371): error C3861: '_mktime64': identifier not found

c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\atltime.h(386): error C3861: '_localtime64_s': identifier not found

c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\atltime.h(409): error C3861: '_gmtime64_s': identifier not found

c:\program files\microsoft sdks\windows\v7.0a\include\intsafe.h(144): warning C4005: 'INT8_MIN' : macro redefinition

c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afxtaskspane.h(279): error C2146: syntax error : missing ';' before identifier 'm_nLastAnimTime'

c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afxribboncategory.h(282): error C2146: syntax error : missing ';' before identifier 'm_ActiveTime'

c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afxdockingmanager.h(353): error C2146: syntax error : missing ';' before identifier 'm_clkLastTime'

Build FAILED.

我参考了这两篇文章,它们都有帮助:

【问题讨论】:

    标签: visual-studio-2010 mfc ffmpeg


    【解决方案1】:

    看看Use FFmpeg in Visual Studio - 它有一个link 到针对Zeranoe 二进制文件构建的小型Visual Studio 2010 项目。

    请注意,您需要一个inttypes.h 文件才能成功构建。

    您的日志显示stdafx.cpp 存在问题,这意味着您的搜索路径设置错误,或者stdafx.h 有问题。将 FFmpeg 目录放在搜索列表的顶部可能会奏效,但它同样可能会破坏 MFC 部分的构建。我宁愿将它们放在列表的底部,但是代码本身应该具有明确的#includes 的正确顺序。

    【讨论】:

    • 谢谢,我不知道我是如何在发布之前错过了我的 SO 搜索中的那个页面,但我想它最终不会解决我古怪的包括订购问题。我之前确实包含了inttypes.h,所以这不是问题。
    【解决方案2】:

    我认为你所做的就是这样。当您完成前 2 个步骤时

    1. 设置 VC++ 目录 -> 包含目录(添加了 FFmpeg “包括”目录)
    2. 设置 VC++ 目录 -> 库目录 (到FFmpeg“lib”目录)

    您已将它们包含在 MFC 和 ATL 路径之前的列表顶部。请使用向上/向下按钮将它们移动到列表底部。这应该可以解决问题

    【讨论】:

    • 谢谢!那是我的问题。对于遇到相同问题的其他人,Visual Studio 在使用“包含目录”对话框时默认将包含添加到列表的前面。您必须手动将其移动到前面的 $(IncludePath) 变量:$(IncludePath);C:\lib\ffmpeg-20130110-git-2672b2c-win32-dev\include;...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 2011-05-12
    • 2011-04-08
    • 2013-02-21
    • 1970-01-01
    • 2013-12-09
    • 2012-08-12
    相关资源
    最近更新 更多