我正在构建一个应用程序,并使用X264库作为编码器。我已经使用MSYS/MINGW为Windows系统构建了库。该库在调试构建下正常工作(注意调试和发布构建都使用默认VS2010设置)。但是,在第一个呼叫X264库时,在发布时会出现违规违规错误,特别是:

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

错误是在此行抛出的:

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

当我弄清楚如何编译库时,我遇到了很多关于Windows/Visual Studios中的内存对齐方式的讨论,以及它与X264预期的对齐方式不兼容。例如,当在MSYS中编译时,我必须启用 - 可启用 - 启发性 - 运动率。我想知道此错误的来源是否可能源于内存对齐问题,这仅通过我的发布构建中的某些设置表现出来。不幸的是,我几乎对这些细节一无所知,所以来到这里。

谁能给我一些有关内存对齐问题和任何可能导致此的视觉工作室设置的更多信息?非常欢迎其他任何解决此问题的技巧/指示。

谢谢。

编辑

从下面的答案:

  1. 从链接的问题中,我得到了他在OpenCV构建中添加了“使用调试器信息”的印象吗?由于我正在通过使用G ++的MSYS构建X264库,因此我不确定我是否可以这样做。我已经检查了我项目的构建设置,并且在发布和调试下,它具有调试器信息。不知道我是否错过了那个帖子,请告诉我。
  2. 我尝试了应用程序验证者。似乎X264试图根据应用程序验证器输出从非执行内存执行代码:

    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.
    

从这个输出中收集什么?

再次感谢。

有帮助吗?

解决方案

参考类似问题 这里, ,看看这是否也对您有帮助。

编辑

发帖您也想通过 相关器

编辑

在我的意见中,“带有调试器信息的构建”等于“与优化开关一起打开-G开关,并关闭任何调试宏。另外,如果您附加了调试器(使用 Gflags )使用调试器开始您的过程(获取WindBG的副本并使用它进行调试)。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top