我试图在我的项目(C ++,VS 2010)中添加对 Ogg Vorbis 的支持。我编译 LibOgg + LibVorbis 来生成静态库没有问题。
我的程序是:
LibOgg
LibVorbis
我的计划
构建成功但与静态构建(工作原理)不同,动态构建在第一个ov_open
调用(打开一些.ogg文件)时崩溃。我建了很多库(GLEW,SQlite等)但这个给了我坚果。
答案 0 :(得分:1)
没关系,我解决了这个问题。
由于 stdio.h 和{的一些链接问题,似乎 OggVorbis 在 Windows 和使用ov_open
时非常敏感{1}}。
Documentation清楚地说:
Windows开发人员的警告:不要在Windows中使用ov_open() 应用; Windows链接对传递文件的地方限制* 成功处理,ov_open()违反这些限制 [一个]。有关使用的详细信息,请参阅ov_open_callbacks()页面 相反,ov_open_callbacks()。
尽管docs建议使用回调,但我发现fopen
是可靠的,它适用于使用OggVorbis的静态和动态构建;如果您在 Windows 上使用ov_fopen
,动态构建将会崩溃。
在我针对Linux和OSX进行测试后,要更新此答案,以验证ov_open
是一个安全的解决方案。
<强>更新强>
如上所述,我在 Windows 7,Linux(Lubuntu),OSX(10.8.2)和Android(KitKat 4.4.4)上测试了ov_fopen
的使用情况,我发现了这是可靠的。因此,对于对回调过敏的人(像我一样),ov_fopen
可靠地证明了。