工欲善其事,必先利其器。对于一个开源项目最好最快的熟悉方式莫过于自己能够进行调试,而FFmpeg又是如此的强大、复杂。自己能够调试FFmpeg将给我们节省很多时间,能够跟快速的学习FFmpeg。分享一下在window7系统下编译能够在visual studio2010中进行调试FFmpeg的过程。

一、编译环境

windows7 32位 + visual studio2010 + MingGW + FFmpeg-3.2.2

二、编译工具下载

(1)下载visual studio2010 
  (2)MinGW 
  (3)下载C99-to-C89 Converter & Wrapper 
  (4)Msinttypes 
  (5)YASM 
  (6)pkg-config

三、安装与配置

3.1、MinGW

(1)下载网址https://github.com/libav/c99-to-c89/releases 
  (2)安装 
  下载MinGW并默认安装(位置C:\MinGW)勾选如下图所示安装包进行安装 
   
  (3)配置 
  配置系统环境变量,把C:\MinGW\bin;C:\MinGW\msys\1.0\bin加入到系统环境变量中。 
  同时找到C:\MinGW\msys\1.0\msys.bat文件,右键编辑,在最前面添加(visual studio2010的安装路径),如下图所示。 
  

3.2、Msinttypes

(1)下载地址(http://code.google.com/p/msinttypes/downloads/list) 
  主要是MSVC 2012 以及之前需要 
  此时还需要新建一个名为INCLUDE的系统环境变量,变量值随意指向一个文件夹,这个文件夹下要装我们所下载的Msinttypes压缩包内的两个头文件,我的目录为D:\FFmpeg\include; ,配置如下图所示: 
  

3.3、配置c99wrap和yasm

(因为vs2010只支持到c89,不支持c99,所以这里要安装c99),将C99-to-C89压缩包里面的c99conv.exe、c99wrap.exe、makedef着三个文件复制到C:\MinGW\msys\1.0\bin(根据自己安装MinGW的目录决定)。 
同时在这个目录下(C:\MinGW\msys\1.0\bin)找到一个名为link.exe的文件,将他重命名一下(随便换个名字),目的是让他与vc的link.exe不冲突。 
将下载好的yasm-1.3.0-win32.exe(如果是64位的操作系统则下载yasm-1.3.0-win64.exe)改名为yasm.exe,放入系统的运行目录下,如32位系统则放入到C:\Windows\System32目录下(64位的放入到C:\Windows\SysWOW64目录下)。

3.4、配置pkg-config

(1)下载地址http://download.csdn.net/download/cll131421/4436220 
  并把下载文件中的bin目录下的.dll和.exe文件拷贝到C:\MinGW\bin目录下 
  重启系统,让配置环境变量生效

4、编译安装FFmpeg

4.1 Configure FFmpeg

(1)进入需要编译的ffmpeg所在的目录,我的目录为: 
C:\MinGW\msys\1.0\home\Administrator\ffmpeg-3.2.2 
首先修改ffmpeg中的configure让其支持c99,修改结果如下图所示: 
 
  (2)打开 “Visual Studio 命令提示(2010)” 的命令行窗口,cd 跳转到这个目录 “C:\MinGW\msys\1.0”,后运行 msys.bat 命令,这样就进入了即能运行 vs2010 的 cl 等命令,又能运行 msys 里面的命行的模式了。如下图所示: 
 
 
  (3)然后使用如下命令: 
./configure –enable-shared –enable-gpl –enable-version3 –toolchain=msvc –prefix=”D:\FFmpeg\bin\FFmpeg3.2.2”(自己建的文件,configure根据系统参数及环境生成makefile,为make做准备)

4.2、Make

make -j4进行并行编译,如出现下图所示错误: 
 
解决方法: 
把d:\FFmpeg\include\stdint. h中<105><109>行的int_fast16_t和uint_fast16_t注释掉,编译成功。 
然后通过make install进行安装

5、在Visual Studio2010中进行调试

5.1、配置文件

(1)把上面编译好的include和lib文件拷贝到当前项目文件夹中进行配置: 
    项目右键->c/c++->常规->附加包含目录->添加include的目录 
              链接器->常规->附加库目录->添加lib的目录 
(2)工具栏->调试->选项和设置->调试->符号,如下图所示:


5.2、调试成功界面

6、参考文献

在windows下编译ffmpeg参考: 
(1)http://blog.csdn.net/u010380485/article/details/54092264#comments 
(2)http://blog.sina.com.cn/s/blog_47612ff10101mri6.html 
(3)http://www.voidcn.com/blog/hejjunlin/article/p-6559184.html 
(4)FFmpeg官网https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC

关于stdint.h中重定义的解决方法: 
(4)http://blog.csdn.net/clever101/article/details/47455501 
(5) 
http://blog.163.com/kongxiang1023@126/blog/static/467395752013317112410799/ 
并行编译参考: 
(6)http://blog.csdn.net/cscrazybing/article/details/50789482 
(7)http://bbs.kafan.cn/thread-1698049-1-1.html 
关于pdb调试参考 
(8)http://www.cnblogs.com/lidabo/p/3486134.html 
关于pkg-config not found解决参考: 
(9)http://www.voidcn.com/blog/hejjunlin/article/p-6559184.html 
(10) 
https://stackoverflow.com/questions/1710922/how-to-install-pkg-config-in-windows 
(11) https://segmentfault.com/q/1010000009567981
--------------------- 
作者:吴裕华 
来源:CSDN 
原文:https://blog.csdn.net/u010011236/article/details/76595394 
版权声明:本文为博主原创文章,转载请附上博文链接!

windows下编译可在visual studio中调试的FFmpeg相关推荐

  1. [译]如何在visual studio中调试Javascript

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  2. 在Visual Studio中调试samples中可能出现的错误

    在Visual Studio中调试samples中可能出现的错误 进入samples/opencl文件夹下,打开OpenCLSamples.sln,然后选择" 生成 -> 重新生成解决 ...

  3. visual studio编译linux,在 Visual Studio 中配置 Linux MSBuild C++ 项目

    在 Visual Studio 中配置 Linux MSBuild C++ 项目Configure a Linux MSBuild C++ project in Visual Studio 10/16 ...

  4. Visual studio 中调试ASP程序、Javascript 代码 - 刘稻博客

    2019独角兽企业重金招聘Python工程师标准>>> PS: 1.在调试asp时,要先附加进程(附加到:自动:与具体调试网站对应的 dllhost.exe 或 w3wp.exe . ...

  5. 在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题)

    今天开始起在Chrome中调试,发现问题主要出在菜单栏(layout文件)中,google了一番,查到很多原因,不过最终解决方法倒是很简单,特此分享一下: 在C:/Windows/System32/d ...

  6. Windows 下用VS2012(Visual Studio 2012)编译librtmp

    https://blog.csdn.net/caoshangpa/article/details/52872756 https://blog.csdn.net/ILOVEYOULEEHUIJIE/ar ...

  7. visual studio asmx 调试_通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序...

    最近两天在Linux中调试.NET Core应用程序,同时我发现在Linux中调试.NET Core应用程序并不容易.一直习惯在Visual Studio中进行编码和调试.现在我想的是可以简单快速的测 ...

  8. 通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序

    最近两天在Linux中调试.NET Core应用程序,同时我发现在Linux中调试.NET Core应用程序并不容易.一直习惯在Visual Studio中进行编码和调试.现在我想的是可以简单快速的测 ...

  9. windows 运行linux c++,Visual studio中使用C++的Linux 开发

    Visual studio中使用C++的Linux 开发 05/15/2017 14 分钟可看完 本文内容 [原文发表地址] Linux development with C++ in Visual ...

  10. Visual studio中编译和使用libpng和zlib

    Visual studio中编译和使用libpng和zlib https://blog.csdn.net/jinzhuojun/article/details/7972747 转载于:https:// ...

最新文章

  1. ACM入门之【树状数组】
  2. Objective-C中block的底层原理
  3. 创建hugo博客_如何创建您的第一个Hugo博客:实用指南
  4. pythoninterp error_Python numpy.interp方法代码示例
  5. (王道408考研操作系统)第三章内存管理-第一节7:非连续分配管理方式之基本分段管理方式
  6. ubuntu 命令记忆
  7. 使用管道和rm命令遇到的问题
  8. 解决RecyclerView的onClickListener问题
  9. 华为机顶盒系统时间同步服务器,华为悦盒主时间同步服务器地址
  10. Photoshop插件-创建亮调通道蒙板-脚本开发-PS插件
  11. 4G+5G多卡聚合(弱网通信)路由器视频传输最佳选择
  12. MultiButton | 一个小巧简单易用的事件驱动型按键驱动模块
  13. xampp mysql 端口被占用_如何解决XAMPP安装后提示80端口被占用
  14. On Inferring Autonomous System Relationships in the Internet 论文阅读笔记
  15. 凸函数高维性质证明(Jenson不等式)
  16. 淘宝网及新浪网等几大官方IP查询API接口地址库的调用及使用方法教程
  17. 30城市地震风险排行上海最低
  18. WPS将Word文档转化成PDF格式
  19. 透视Linux内核神奇的BPF 一
  20. VUE调用高德地图之电子围栏

热门文章

  1. 使用Eclipse创建的第一个javabean,cannot resolved to a type
  2. php 5.5 preg replace,解决ecshop在php5.5以上环境preg_replace报错方法
  3. 电脑麦克风插孔是哪个_科唛BoomXD 2.4G数字无线麦克风
  4. JetBrains注册码计算(IntelliJ IDEA 15.0注册码激活)
  5. Nginx服务器中的Socket切分,需要的朋友可以参考下
  6. 【22】Vue 之 Vue Devtools
  7. Redis命令拾遗四——集合类型(命令补充)
  8. 部署桌面虚拟化时要考虑的因素
  9. PHP oop之大讨论 --- 你究竟有无在用OOP
  10. C语言中强制转换问题