我在一个C ++ DLL中嵌入python(所以最终我可以把它放在一个xll中)。当设置错误时,Py_Initialize被记录为最终失败 - 请参阅http://docs.python.org/c-api/init.html,“......如果初始化失败,则会出现致命错误。”。
是否可以捕获此错误以及如何捕获?
想想可能是一个全局的Windows挂钩?
答案 0 :(得分:3)
致电Py_FatalError
会导致致命错误,并以解释性消息告别,然后拨打abort()
。
答案 1 :(得分:1)
我通过创建一个单独的可执行文件来尝试初始化python来解决这个问题。我的主要进程将启动它并检查退出代码,并且只有在子进程成功时才调用PyInitialize。因此,python初始化两次,但它比用户的明显崩溃更好。
答案 2 :(得分:1)
目前,Jason的解决方案似乎是唯一的方法,但这并不包括Python因Py_Initialize()
之后的某个地方因致命错误而失败的情况,因此嵌入式应用程序无法处理它以更优雅的方式显示(显示GUI消息,然后才中止)。
我在Python错误跟踪器中创建了一个补丁和问题,交叉引用了这个问题:http://bugs.python.org/issue30560