vs2013编译ffmpeg之二十一 opencore-amr、opencv

opencore-amr

对应ffmpeg configure选项–enable-libopencore-amrnb和–enable-libopencore-amrwb。

从sourceforge上下载opencore-amr-0.1.3,github上的master没有configure文件。编译方法,在opencore-amr-0.1.3下面执行:

mkdir msys_build; ./configure --prefix=$(pwd)/msys_build; make; make install

opencv

对应ffmpeg configure选项–enable-libopencv。

官网http://opencv.org/downloads.html

跨平台的计算机视觉库,用于开发实时的图像处理、计算机视觉以及模式识别程序。

从官网上下载opencv-2.4.13.exe,这个是2016年5月的版本,2015年有个版本opencv-3.1.0.exe看上去比2016年的版本还要新,不知道是什么原因。这里选择的是opencv-2.4.13.exe,双击运行,选择要解压的目录,会将opencv的库和头文件解压到这个目录下。

ffmpeg configure和链接时的库选择opencv\build\x86\vc12\staticlib\opencv_core2413d.lib。

编译错误一

由于所有的代码编译都加了MTd,opencv的库要选择opencv_core2413d.lib,不然会报下面的错误。

opencv_core2413.lib(persistence.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:  值“0”不匹配值“2”(x265-static.lib(api.obj) 中)

编译错误二

下面这个错误:

libavfilter.a(vf_libopencv.o) : error LNK2001: 无法解析的外部符号 _cvSmooth

libavfilter.a(vf_libopencv.o) : error LNK2001: 无法解析的外部符号 _cvCreateStructuringElementEx

libavfilter.a(vf_libopencv.o) : error LNK2001: 无法解析的外部符号 _cvReleaseStructuringElement

libavfilter.a(vf_libopencv.o) : error LNK2001: 无法解析的外部符号 _cvErode

libavfilter.a(vf_libopencv.o) : error LNK2001: 无法解析的外部符号 _cvDilate

opencv\build\x86\vc12\staticlib下面的库非常多,写个脚本来搜索符号:

!/bin/sh

for i in *.lib

do

    echo "File ${i}"

    dumpbin.exe -SYMBOLS ${i} | grep cvSmooth

done

脚本在msys+vcvars32.bat环境下执行,得到类似的打印,贴一部分:

File opencv_features2d2413.lib

540 00000000 UNDEF  notype ()    External     | _cvSmooth

File opencv_imgproc2413.lib

847 00000000 SECT3C4 notype ()    External    | _cvSmooth

A43 00000067 SECT3C6 notype ()    Static      | _ehhandler$cvSmooth

File opencv_imgproc2413d.lib

9D8 00000000 SECT461 notype ()    External    | _cvSmooth

C5C 00000076 SECT463 notype ()    Static      | _ehhandler$cvSmooth

UNDEF表示是调用cvSmooth函数,有SECT的就是函数定义的地方,这里选择debug版本的库opencv_imgproc2413d.lib。

你可能感兴趣的:(vs2013编译ffmpeg)