Добавление кодировки ogg vorbis в мой проект - PullRequest
0 голосов
/ 07 марта 2011

Для моего приложения MFC мне нужно преобразовать данные .wav в массиве в формат ogg vorbis.

Я скомпилировал libogg и libvorbis как статические библиотеки.Я создал каталог «bin» в своей папке проекта и поместил туда libvorbis_static.lib и libvorbisfile_static.lib.Кроме того, я создал в папке bin папку libvorbis и в нее папку include и поместил туда папки vorbis (с codec.h, vorbisfile.h, vorbisenc.h) и ogg (с os_types.h и ogg.h).Я добавил libvorbis_static.lib в дополнительные зависимости моего проекта, а папку bin - в дополнительные каталоги библиотек.

Когда я пытаюсь скомпилировать, я получаю ошибки:

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 &)" (??0type_info@@AAE@ABV0@@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 &)" (??4type_info@@AAEAAV0@ABV0@@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

Я запутался.Не могли бы вы помочь?Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 июня 2011

Проверьте, с каким c-runtime вы скомпилировали ogg-vorbis.Он должен соответствовать вашему приложению, если вы статически связываете.

Если вы вместо этого скомпилировали vorbis для DLL, вы можете использовать отдельные c-runtime (если память, выделенная DLL vorbis, всегда освобождаетсяэтой DLL, и это только для c API).

0 голосов
/ 07 марта 2011

ССЫЛКА: предупреждение LNK4098: defaultlib 'MSVCRT' конфликтует с использованием других библиотек;используйте / NODEFAULTLIB: библиотека

Это не имеет ничего общего с orbis, это то, что вы получаете, когда пытаетесь связать и c stdlib, и C stdlib MFC в одной программе - просто делайтекомпилятор говорит вам.Или просто установите его, чтобы игнорировать libcmt / d

...