使用Visual Studio 2010,MFC和FFmpeg构建

时间:2013-01-11 00:06:56

标签: visual-studio-2010 mfc ffmpeg

我正在使用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等)
  4. 对于它的价值,当我从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.

    我已经引用了这两篇文章,这些文章都有帮助:

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

查看Use FFmpeg in Visual Studio - 它对于根据Zeranoe二进制文件构建的小型Visual Studio 2010项目有一个link

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

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