一、下載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吧。