2011-03-07 22 views
0

對於我的MFC應用程序,我需要將數組中的.wav數據轉換爲ogg vorbis格式。將ogg vorbis編碼添加到我的項目

我將libogg和libvorbis編譯爲靜態庫。我在我的項目文件夾中創建了「bin」目錄,並在那裏放置了libvorbis_static.lib和libvorbisfile_static.lib。另外,我在bin目錄下創建了libvorbis文件夾和一個包含文件夾,並在其中放置了vorbis(帶有codec.h,vorbisfile.h,vorbisenc.h)和ogg(帶有os_types.h和ogg.h)文件夾。我將libvorbis_static.lib添加到我的項目的其他依賴項,並將bin文件夾添加到Additional Library Directories。

當我嘗試編譯,我得到的錯誤:

1>libvorbis_static.lib(info.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance 

1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification 

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _free already defined in libcmtd.lib(dbgfree.obj) 

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _calloc already defined in libcmtd.lib(dbgcalloc.obj) 

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _malloc already defined in libcmtd.lib(dbgmalloc.obj) 

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _realloc already defined in libcmtd.lib(dbgrealloc.obj) 

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _memmove already defined in libcmtd.lib(memmove.obj) 

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _ldexp already defined in libcmtd.lib(_ldexp_.obj) 

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _qsort already defined in libcmtd.lib(qsort.obj) 

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _ceil already defined in libcmtd.lib(_ceil_pentium4_.obj) 

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _exit already defined in libcmtd.lib(crt0dat.obj) 

1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" ([email protected]@[email protected]@@Z) already defined in libcmtd.lib(typinfo.obj) 

1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" ([email protected]@[email protected]@@Z) already defined in libcmtd.lib(typinfo.obj) 

1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library 

1>BookDoc.obj : error LNK2001: unresolved external symbol _ogg_stream_clear 

1>BookDoc.obj : error LNK2001: unresolved external symbol _ogg_page_eos 

1>BookDoc.obj : error LNK2001: unresolved external symbol _ogg_stream_pageout 

1>BookDoc.obj : error LNK2001: unresolved external symbol _ogg_stream_flush 

1>BookDoc.obj : error LNK2001: unresolved external symbol _ogg_stream_packetin 

1>BookDoc.obj : error LNK2001: unresolved external symbol _ogg_stream_init 

1>libvorbis_static.lib(info.obj) : error LNK2001: unresolved external symbol _oggpack_readinit 

1>libvorbis_static.lib(info.obj) : error LNK2001: unresolved external symbol _oggpack_bytes 

1>libvorbis_static.lib(info.obj) : error LNK2001: unresolved external symbol _oggpack_writeclear 

1>libvorbis_static.lib(info.obj) : error LNK2001: unresolved external symbol _oggpack_read 

1>libvorbis_static.lib(info.obj) : error LNK2001: unresolved external symbol _oggpack_reset 

1>libvorbis_static.lib(info.obj) : error LNK2001: unresolved external symbol _oggpack_write 

1>libvorbis_static.lib(info.obj) : error LNK2001: unresolved external symbol _oggpack_writeinit 

1>libvorbis_static.lib(bitrate.obj) : error LNK2001: unresolved external symbol _oggpack_writetrunc 

1>libvorbis_static.lib(bitrate.obj) : error LNK2001: unresolved external symbol _oggpack_get_buffer 

1>libvorbis_static.lib(codebook.obj) : error LNK2001: unresolved external symbol _oggpack_adv 

1>libvorbis_static.lib(codebook.obj) : error LNK2001: unresolved external symbol _oggpack_look 

1>.\Debug/Book.exe : fatal error LNK1120: 17 unresolved externals 

我很困惑。能否請你幫忙? 謝謝。

+0

這和你以前的問題有什麼不同:http://stackoverflow.com/questions/5186558/problem-encoding-wav-into-ogg-vorbis? –

回答

0

鏈接:警告LNK4098:defaultlib'MSVCRT'與使用其他庫相沖突;使用/ NODEFAULTLIB:庫

這無關奧比斯,這是當你試圖連接雙方的C STDLIB並在同一個程序MFC公司的C STDLIB你會得到什麼 - 只是做編譯器會告訴你。 或者只是將其設置爲忽略libcmt/d

0

檢查您編譯ogg-vorbis的c-runtime。如果您要靜態鏈接,它必須匹配您的應用。

如果您已經將vorbis編譯爲DLL,您可能可以使用單獨的c-runtimes(如果由vorbis DLL分配的內存總是由該DLL釋放,並且是純c API)。

相關問題