visual-studio-2010 - Ogg vorbis崩溃

  显示原文与译文双语对照的内容
0 0

我正在努力增加对 Vorbis的支持,在我的项目中,( C++,vs 2010 ) 。 编译 LibOgg + LibVorbis 生成 static 库时,我没有问题。

我的过程是:

LibOgg

  • 下载 LibOgg
  • 使用动态解决方案构建 LibOgg ( 发布)
  • 在 /release 文件夹中获取一个 libogg.lib export export export

LibVorbis

  • 下载 LibVorbis
  • 设置适当的文件,包括+ 库的文件夹,用于 LibOgg
  • 使用动态解决方案构建 LibVorbis ( 发布)
  • 获取一个 /release libvorbisfile.lib 和导出和/release libvorbisfile.dll 在/release文件夹中。

给我的程序评分

  • 设置适当的包括+ 库 Libogg + LibVorbis导出导出
  • 将 。dll放在工作目录中

构建成功,但与 static 构建( which ) 不同,动态构建在第一个 ov_open 调用( 打开了一些. ogg 文件) 中崩溃。 我构建了大量的库库,但是这一项给了我一些 nuts 。

时间: 原作者:

0 0

算了,我解决了。 在 OggVorbis 和使用 ov_open的时候,由于某些链接问题,比如 stdio.h 和 fopen,它看起来。

文档清楚地说:

对 Windows 开发人员警告:不要在 Windows 应用程序中使用 ov_open() ;Windows 链接位置限制成功传递,并且 ov_open() 运行这些限制 [a]的afoul 。 有关使用 ov_open_callbacks()的详细信息,请参阅 ov_open_callbacks() 页面。

docs建议使用回调,我发现 ov_fopen 可靠,可以在 static 和动态构建中工作,如果使用 ov_open,动态生成会崩溃,如果你在 Windows 使用

在我测试,以验证 ov_fopen 作为安全性的情况下,将在解决方案中更新这个答案。

更新

我曾经在 Windows Linux Linux Linux和安卓( KitKat 4.4.4 ) 上测试过 ov_fopen的使用,我发现它能可靠地工作。 因此,对于那些对回调( 我像) 过敏的人来说,ov_fopen 是可靠的。

原作者:
...