MinGW下编译ffmpeg静态库给Visual C++使用

本文地址: blog.csdn.net/wangjia184/article/details/7931164

首先推荐, 这里已经有编译好的动态连接库。可惜上面没静态链接库。我也试过 DLL2Lib, 但是无法连接LIBCMT库,只能使用MSVCRT

所以一定要静态库的话只能自己编译了。在Windows上用MinGW编译真是个痛苦的过程,没有yum install和apt-get,所有的依赖项要自己找全。

废话少说,下面是编译过程,记录于此。

VS2010编译后的结果在这里下载

准备

首先 下载安装 MinGW, 比较赞的是,现在它提供自动化的安装配置程序,相比以前大大简化了安装过程,连fstab都帮你配置了。

安装完成后编辑MinGW\msys\1.0\msys.bat 批处理, 在文件最前面加入一行,调用 Visual Studio的vcvarsall.bat批处理设置环境变量

call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"

本文地址:

接着在MinGW的下载站点上 下载安装 g++,我下载的版本是4.6.2,覆盖到MinGW目录即可.

%2B%2B-4.6.2-1-mingw32-bin.tar.lzma/download

然后下载yasmWin32 版本,将文件重命名并分别复制2份到MinGW\bin\yasm.exe 和MinGW\bin\nasm.exe , 后面很多编译的项目依赖于它们.

执行msys.bat, 在命令行窗口中切换到打算编译的目录。比如我的在L盘, 则使用 cd /L/ 进入, 其它文件命令与Linux一致。

准备活动到此结束,下面就开始漫长的编译过程了。

本文地址:

编译依赖项(下面的版本号是我编译的时候的版本号,不一定必须是这个版本号)

1. Zlib 1.2.7

下载源代码解压后:

cd zlib-1.2.7/make -f win32/Makefile.gcccp -iv zlib1.dll /mingw/bincp -iv zconf.h zlib.h /mingw/includecp -iv libz.a /mingw/lib本文地址: 2.libgsm1.0.13-3

下载源代码,,解压后:

cd gsm/make

编译到一半的时候出现fchmod 和fchown 的编译错误,不管它,,继续执行:

mkdir /mingw/include/gsmcp inc/gsm.h /mingw/include/gsmcp lib/libgsm.a /mingw/lib本文地址: 3.LAME 3.99.5

下载源代码, , 解压后:

./configure –prefix=/mingw –enable-expopt=fullmakemake install本文地址: 4. LIBOGG 1.3.0

下载源代码,,解压后:

./configure –prefix=/mingwmakemake install本文地址:

5. LIBVorbis 1.3.3

下载源代码,,解压后:

./configure –prefix=/mingwmakemake install本文地址:

6. LIBSpeex 1.2rc1

下载源代码,,解压后:

./configure –prefix=/mingwmakemake install本文地址:

7. LIBTheora1.1.1

下载源代码,,解压后:

./configure –prefix=/mingwmakemake install本文地址:

8. FAAC1.28

下载源代码,,解压后:

首先编辑 Makefile.am 文件,将第一行 改为

SUBDIRS = include libfaac

然后修改configure.in文件, 找到最后一段的AC_OUTPUT, 修改为

AC_OUTPUT(libfaac/Makefile include/Makefile Makefile)

执行:

./configure –prefix=/mingwmakemake install本文地址:

9. xvidcore1.3.2

下载源代码,,解压后:

cd xvidcore/build/generic./configure –prefix=/mingw执行到这里后,搜索xvidcore/build/generic 目录下面所有文件中的-mno-cygwin 这个选项, 这个选项已经不被GCC支持,全部删除后继续。makemake installcp -iv \=build/xvidcore.dll.a /mingw/lib/libxvidcore.dll.a本文地址:

10. x264snapshot-20120830-2245

下载源代码,,解压后:

configure –prefix=/mingw –enable-win32thread –extra-cflags="-DX264_VERSION=20100422"makemake installcp -iv x264.h x264_config.h /mingw/includecp -iv libx264.a /mingw/libcp -iv x264.pc /mingw/lib/pkgconfig本文地址: 编译ffmpeg 0.11.1

相信有耐心进行到这里的人,已经花了1-2个小时了,这是正常的速度。终于可以编译ffmpeg了.

下载源代码,,解压后首先配置,光这个自动配置过程也要十分钟左右。./configure –prefix=/mingw –enable-gpl –enable-nonfree –enable-postproc –enable-avfilter –enable-w32threads –enable-runtime-cpudetect –enable-memalign-hack –enable-bzlib –enable-libfaac –enable-libgsm –enable-libmp3lame –enable-libspeex –enable-libtheora –enable-libvorbis –enable-libx264 –enable-libxvid –enable-zlib –disable-debug然后 make & make install 等着编译结束吧。本文地址:

链接

链接静态库需要注意链接的顺序, 我的VC版本是VS2010#ifdef __cplusplusextern "C" {#endif#include <libavcodec/avcodec.h>#include <libavformat/avformat.h>#include <libavutil/avutil.h>#include <libswscale/swscale.h>#ifdef __cplusplus}#endif#pragma comment( lib, "libgcc.a")#pragma comment( lib, "libmingwex.a")#pragma comment( lib, "libcoldname.a")#pragma comment( lib, "libavcodec.a")#pragma comment( lib, "libavformat.a")#pragma comment( lib, "libavutil.a")#pragma comment( lib, "libswscale.a")#pragma comment( lib, "libz.a")#pragma comment( lib, "libfaac.a")#pragma comment( lib, "libgsm.a")#pragma comment( lib, "libmp3lame.a")#pragma comment( lib, "libogg.a")#pragma comment( lib, "libspeex.a")#pragma comment( lib, "libtheora.a")#pragma comment( lib, "libvorbis.a")#pragma comment( lib, "libvorbisenc.a")#pragma comment( lib, "libx264.a")#pragma comment( lib, "xvidcore.a")#pragma comment( lib, "wsock32.lib")#pragma comment( lib, "vfw32.lib")本文地址:

而在于当时的那份心情。可是旅行的彼时那刻我的心情一直是好的吗?

MinGW下编译ffmpeg静态库给Visual C++使用

相关文章:

你感兴趣的文章:

标签云: