2010-12-08 100 views
0

我正在构建一个应用程序并使用x264库作为编码器。我使用MSys/MingW为我的Windows系统建立了库。该库在调试版本下正常工作(注意调试和发布版本都使用默认的VS2010设置)。然而,在释放访问冲突错误是在第一次调用的x264库抛出,特别是:Visual Studio 2010中的libx264 - 发布版本中的内存错误

Unhandled exception at 0x00905a4d in StreamTest.exe: 
    0xC0000005: Access violation. 

错误是在这行抛出:

x264_param_default_preset((params), "veryfast", "zerolatency"); 

当我搞清楚如何编译库我在Windows/Visual Studios中遇到了很多关于内存对齐的话题,以及它如何与x264预期的对齐方式不兼容。例如,当在MSys中编译时,我必须启用--enable-memalign-hack。我想知道这个错误的来源是否可能源于内存对齐问题,这个问题只能通过发布版本中的某些设置来体现。不幸的是,我对这些细节几乎一无所知,所以来到这里。

任何人都可以给我一些关于内存对齐问题和任何可能导致此问题的Visual Studio设置的信息?任何其他技巧/指针来解决这个问题是非常受欢迎的。

谢谢。

编辑

从下面的回答:

  1. 从链接SO问题,我得到他补充说:“建立与调试信息”,以OpenCV的建设的印象?由于我通过使用G ++的MSys构建x264库,我不确定我能做到这一点。我已经检查了我的项目的构建设置,并且在发布和调试下都有调试器信息。不知道我是否错过了那篇文章中的内容,请告诉我。
  2. 我试过应用验证程序。看来,X264正试图从非可执行内存按在App验证输出执行代码:

    VERIFIER STOP 0000000000000650: pid 0x1B18: 
    

    尝试在非可执行内存(第一次机会)执行代码。

    0000000000905A4D : Address being accessed. 
    0000000000905A4D : Code performing invalid access. 
    000000000021EA90 : Exception record. Use .exr to display it. 
    000000000021E5A0 : Context record. Use .cxr to display it. 
    

任何从这个输出收集?

再次感谢。

回答

2

参考一个类似的问题here,看看是否也可以帮助你。

编辑

后,您还希望通过AppVerifier

编辑

运行你的应用程序在我看来释“与调试信息生成”达接通-g与优化开关切换一起并关闭任何DEBUG宏。此外,如果您使用调试器附加了调试器(使用Gflags)来启动您的过程(获取windbg的副本并将其用于调试)。

当Appverifer停止您的进程时,请使用.cxr命令获取上下文信息。这应该有助于指出问题。

+0

感谢您的输入,我已经将您的建议的结果添加到我的OP的编辑。请给出意见! – DeusAduro 2010-12-09 18:25:30