OggVorbis ov_open()抛出访问冲突异常
OggVorbis ov_open() Throws Access Violation Exception
我正在尝试使用Vorbis SDK/dll打开OggVorbis文件。ov_open()
抛出访问冲突异常0x00000014
。我已经检查了文件的存在:我已经用fopen
打开了它,并将内容打印到控制台只是为了检查-一切都很好!
可能没有区别,但是dll已经被编译为DEBUG Win32,并且我的项目在相同的配置下编译。
为了保证,我使用了文件的绝对路径,并且该文件确实存在。如前所述,我可以自己打开并阅读它。
*。ogg文件是用FL Studio以192kbps的速度渲染的,它在Adobe Audition和VLC Media Player中也可以很好地打开和播放。
这是我打开文件并将其发送到Vorbis库的代码(代码来自本教程):
FILE* oggFile;
const char* path = "C:\absolute\path\to\file.ogg";
const char* openMode = "rb";
int result;
if (!(oggFile = fopen(path, openMode)))
{
throw std::string("Could not open file.");
}
if ((result = ov_open(oggFile, &oggStream, NULL, 0)) < 0)
{
// Never gets here
fclose(oggFile);
throw std::string("Could not open Ogg stream: ");
}
抛出异常的"Vorbis"代码:
// vorbisfile.c: line #827
static int _fseek64_wrap(FILE *f,ogg_int64_t off,int whence) {
if(f==NULL)return(-1);
return fseek(f,off,whence); // Exception thrown here
}
此时,off == 0
和whence == 1
。
我确实看到方法名包含"64"。这可能是想要读取64位编码文件吗?或者当它实际编译为32位时,它是否试图以64位运行?或者这根本不是问题所在?: P
此外,当我按照教程操作时,我注意到代码中有几个错误,我必须纠正。所以我想知道如果教程是"完整的"足够,即:也许有一些变量我应该#define
,或者其他的东西,可能在发送打开的文件到ov_open
之前丢失,以便它得到相应的处理。
技术规格:
- Windows 10
- Visual Studio Express 2013
-
_MSC_VER
1800 -
libogg.dll
v1.3.2 (current) -
libvorbis.dll
v1.3.5 (current)
注意:下载的Vorbis源代码仅包含Solution和Project文件,直到VS2010。我在Visual Studio Express 2013中打开VS2010 解决方案来编译它们,以获得与我的项目的兼容性。我也想知道这是否会导致一些问题。
OggVorbis文档建议不要在windows上使用ov_open (https://xiph.org/vorbis/doc/vorbisfile/ov_open.html)。
用ov_open_callbacks代替。
应该这样做:
ov_open_callbacks(oggFile, &oggStream, NULL, 0, OV_CALLBACKS_DEFAULT);
- 写入访问冲突异常
- 在C++中删除双向链表的头节点后出现访问冲突异常
- Visual Studio图形调试器引发读取访问冲突异常
- 尝试将 std::cerr 重定向到文件时出现访问冲突异常
- 媒体基础:读取示例 - 访问冲突异常
- 链表的访问冲突异常
- 进入函数之前的访问冲突异常
- 删除函数 c++ 的读取访问冲突异常
- 无法使用 C++ catch(..) 捕获访问冲突异常
- 在Visual Studio Community中使用glfw3 glew和opengl获取访问冲突异常
- 访问动态 2D 字符数组时引发访问冲突异常
- 从静态库使用 Boost Asio 时访问冲突异常
- 为什么访问冲突异常不能被 捕获.NET4.0.
- glGenBuffers 访问冲突异常
- unsigned char*导致访问冲突异常
- 注入DLL的函数中出现访问冲突异常(5)
- 删除二叉搜索树中的节点中的 Visual Studio 中的访问冲突异常
- 提升 Asio tcp::接受者访问冲突异常
- 在 .Net 应用程序中调用 C++ DLL 时出现系统访问冲突异常
- 为什么此代码会引发访问冲突异常