上节目结束这个简单的代码崩溃(Qt的5.9.1,5.4.1 GCC):shared_ptr的<QCoreApplication>崩溃
#include <QCoreApplication>
#include <memory>
std::shared_ptr<QCoreApplication> manager;
int main(int argc, char *argv[])
{
manager = std::make_shared<QCoreApplication>(argc, argv);
}
我知道通常的方法是在堆栈上声明一个QCoreApplication
实例并在main()
结束时销毁它,但我的用例如下所示:我正在用Boost.Python封装一个使用Qt的库,并且在python模块加载时我像上面那样初始化Qt。但是,除非强制用户拨打finalize()
方法,否则我无法销毁QCoreApplication
。
想法是当库(python模块)被卸载时被破坏,但这似乎不起作用。上述预期,如果是这样,为什么? “破坏秩序问题”是我的第一个猜测,但在这种情况下,这应该被视为一个错误?
应用程序对象是一个全局变量/单例(你可以使用'qApp'或'QCoreApplication :: instance()'来获得它,初始化可能会做很多事情,我不确定你是否真的卸载它。最好从Python创建应用程序实例,然后使用它。 –