【问题标题】:VS2012: Program can't start because "libvorbisfile.dll" is missingVS2012:程序无法启动,因为“libvorbisfile.dll”丢失
【发布时间】:2014-04-10 00:42:20
【问题描述】:

我有一个项目,我正试图让它读取一个 .OGG 文件。 我已经从here 下载了libogglibvorbis,编译它们(我不得不先构建libogg 时遇到了一些麻烦),然后得到了以下文件:

libogg.lib
libogg.dll
libvorbis.lib
libvorbis.dll
libvorbisfile.lib
libvorbisfile.dll

我将它们全部拖到项目的 Libraries 文件夹中,已添加到项目中,并将它们包含在 Linker->Input(仅 .lib)中。

接下来,我将标题复制到项目的 Includes 文件夹中,该文件夹也已添加到项目中,其中包含文件:

ogg/ogg.h
ogg/os_types.h

vorbis/codec.h
vorbis/vorbisenc.h
vorbis/vorbisfile.h

然后我添加了一些代码,我得到了错误“程序无法启动,因为计算机中缺少 libvorbisfile.dll。” 而且我很确定该文件位于 Library 文件夹中并在属性中正确定义。

我在此过程中是否做错了什么? 如何找出问题所在以便修复?

我已经尝试将 .dll 放入项目文件夹和 Windows/System32 文件夹中,但没有成功。

【问题讨论】:

    标签: c++ visual-studio-2012 vorbis oggvorbis


    【解决方案1】:

    库文件夹适合您的 .lib 文件,但它会在运行时查找 .dll,您的项目设置对此没有影响。 Windows 在几个地方寻找 .dll,但让程序运行的最简单方法是将 .dll 放在工作目录中,这是您运行可执行文件的位置(可能与 .exe 相同的目录文件)。

    【讨论】:

    • 也试过了,还是不行。通常将它们放在 Windows/Sys32 - 64 文件夹中总是可以解决这个问题,但这次不是......所以我猜是发生了一些非常错误的事情......
    • 我重新阅读了您的答案,并注意到您建议放入 Debug/Release 文件夹,而不是项目的...我试过了,它奏效了!虽然我不确定为什么只有这些(所有三个都必须移到那里,ogg、vorbis 和 vorbisfile)必须在那里......
    • 参见:msdn.microsoft.com/en-us/library/windows/desktop/… 您可能将 .dll 放入了错误的 system 文件夹中。使用文章中提到的功能,看看你的.dll是否放对了地方。
    猜你喜欢
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    相关资源
    最近更新 更多