今天花了一天时间在编译上,主要是编译出来的dll调用会抛异常(0xc0000005).
首先下载新版ffmpeg,http://ffmpeg.mplayerhq.hu/,我下载的版本为0.8.11。
编译的环境主要是msys + mingw。这里有个配置好的http://code.google.com/p/msys-cn/wiki/ChapterInstallation。不过其gcc编译出来的dll调用时会抛出异常,后面会替换其gcc。
还会用到其他一些东西,譬如pthreads,ftp://sourceware.org/pub/pthreads-win32。yasm,还有这个编译要用到,需要保存在系统环境目录下。
将ffmpeg拷贝到msys的home下,通过msys进入ffmpeg目录。
首先是配置:$./configure --enable-shared --enable-memalign-hack
下面执行$make和$make install
到这里就可以得到编译好的lib,dll,exe.
现在就可以将lib和dll在vs2008下应用了,不过提示'UINT64_C'标识符不认识,在config.h后面添上几行
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif
下面就可以调用ffmpeg了,当然调用C函数需要加上extern "C"
e.g
#include "config.h"
extern "C"{#include "libavcodec/avcodec.h"};
到这里,编译不会出问题,不过运行时候会跳出个异常对话框。
这个问题是因为gcc版本不对,我也试过用网上介绍的gcc-core-4.2.1-sjlj-2.tar.gz,并没有作用,
所以我使用了tdm-gcc,http://tdm-gcc.tdragon.net/,这里用的版本是4.6.1,
安装之后将myys/mingw下对应的文件覆盖即可。
重新编译一次,就可以得到需要的文件。
这里有个编译好的版本,可以直接下载:
http://download.csdn.net/detail/dajjnan/4286027