我在我的 C++ 应用程序中使用 ffmpeg。
当尝试播放某些文件时,ffmpeg 内部的断言失败,这导致它调用终止我的应用程序的 abort()
。我不想要这种行为,而是希望有机会恢复,最好是通过异常。
有人知道我如何解决 ffmpeg/assert 可能终止我的应用程序的问题吗?
编辑:
我现在能想到的唯一方法是更改 ffmpeg assert 宏,以便它导致访问冲突,我可以通过 SEH 异常捕获它。丑陋且可能很糟糕的解决方案?
最佳答案
如果“异常”需要编译为 C,您可以使用 setjmp/longjump 对。将 setjmp 放在您的错误处理代码中,并将 longjmp 放在 FFMPG 代码中的 abort 位置。
如果您真的想要捕获真正的异常,除以零可能比随机访问违规更安全。
关于c++ - ffmpeg assert - 抛出异常而不是中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8212492/