编译speex
一、下载speex
地址:
http://www.speex.org/downloads/
或者
我下载的是目前最新版本 1.2rc1
二、 编译speex
我使用的IDE是VS2005,故打开项目下的win32/vs2005/libspeex.sln,编译,有几个project报错,缺少ogg.h文件。
继续到
下载libogg,我下载的版本是1.3.0,打开项目下的win32\VS2005\libogg_dynamic.sln,项目很小,只有两个c文件,成功编译。
配置libspeex中需要libogg的project的include、lib路径,再次编译,此时project speexenc任然出错,错误信息为
3>LINK : ..\..\..\bin\speexenc.exe not found or not built by the last incremental link; performing full link 3>MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _malloc already defined in LIBCMTD.lib(dbgheap.obj) 3>MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _free already defined in LIBCMTD.lib(dbgheap.obj)
相信有经验的程序员一眼就能看出,这是链接标准库时出了问题。按道理说两个solution都是VS2005的/MDd,不应该出现问题。而且很奇怪的是,project speexdec同样使用了libogg,却能成功编译。打开speexdec的项目配置,原来它在Ignore Specific Library中填上了LIBCMTD.lib,同样设置speexenc,编译成功。
另还有一个project testresample,其中只有一个testresample.c,却找不到该文件,想来应该是一个测试或演示示例,竟然找不到它,就忽略这个project吧。