Mingw编译动态库时,生成的lib文件是用Mingw下的libtool生成的,是有些问题的。在VC的Debug模式下运行是没有问题的,但Release模式下就会崩溃。原因是Release模式下,工程配置项里 linker/optimization 的 Reference选项是打开的,即选了Yes (/OPT:REF),此时由libtool生成的lib就会有问题。
解决方法:用VS自带的lib.exe 来重新生成lib文件即可解决。步骤如下:
1. 打开Visual Studio Command Prompt,然后切换到需要生成lib文件的dll的目录,以ffmpeg的动态链接库为例。
2. 执行 lib /machine:i386 /def:avcodec-54.def /out:avcodec.lib。
3. 用上面生成的lib文件重新编译工程即可解决问题。