【问题标题】:Adding ogg vorbis encoding to my project将 ogg vorbis 编码添加到我的项目中
【发布时间】:2011-07-10 12:08:44
【问题描述】:

对于我的 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

我很困惑。能否请你帮忙? 谢谢。

【问题讨论】:

标签: c++ audio data-conversion


【解决方案1】:

检查您编译 ogg-vorbis 时使用的 c-runtime。如果您是静态链接,它必须与您的应用相匹配。

如果您已将 vorbis 编译为 DLL,则可以使用单独的 c 运行时(如果 vorbis DLL 分配的内存始终由该 DLL 释放,并且它是仅 c 语言的 API)。

【讨论】:

    【解决方案2】:

    LINK:警告 LNK4098:defaultlib 'MSVCRT' 与其他库的使用冲突;使用 /NODEFAULTLIB:library

    这与 orbis 无关,这是您尝试在同一程序中链接 c stdlib 和 MFC 的 C stdlib 时得到的结果 - 只需按照编译器告诉您的操作即可。 或者只是将其设置为忽略 libcmt/d

    【讨论】:

      猜你喜欢
      • 2011-07-08
      • 2011-11-11
      • 2013-12-14
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 2014-12-28
      • 2015-07-13
      相关资源
      最近更新 更多