Mac平台下Qt GUI程序以动态库方式加载时的NSPersistentUIRequiresSecureCoding崩溃问题

Qt GUI程序封成动态库方式,供其他非Qt程序加载使用时,遇到一个GUI初始化并显示时,大概10s后程序崩溃的问题,调用栈显示崩溃在主线程的NSPersistentUIRequiresSecureCoding函数调用中,如下图所示:

经过排查以及互联网搜索,发现了Qt论坛上有人问到了类似问题:https://forum.qt.io/topic/159548/building-a-dll-on-macos-for-a-non-qt-application/7,原来Qt GUI在以库方式加载使用时,还要设置额外的初始化标识:

1
2
QGuiApplication::setAttribute(Qt::AA_PluginApplication);
QGuiApplication::setQuitOnLastWindowClosed(false);

主要是上面的Qt::AA_PluginApplication,看来Qt内部有针对这种plugin方式使用的特殊处理逻辑,加上这个attribute后,再次测试,就不再崩溃了。

博主友情提示:

如您在评论中需要提及如QQ号、电子邮件地址或其他隐私敏感信息,欢迎使用>>博主专用加密工具v3<<处理后发布,原文只有博主可以看到。