我在以下示例之后使用 Qt/MFC 迁移框架工具:http: //doc.qt.nokia.com/solutions/4/qtwinmigrate/winmigrate-qt-dll-example.html
我构建的 dll 由基于 MFC 的第 3 方应用程序加载。第 3 方应用程序基本上调用我导出的 DLL 函数之一来启动我的插件和另一个函数来关闭我的应用程序。目前我在关机功能中什么也没做。
当我在 3rd 方应用程序中加载我的 DLL 时,将调用启动函数并且我的 DLL 成功启动并且我可以看到我的消息框。但是,如果我关闭我的插件然后尝试再次启动它,我会收到以下错误:
Debug Error!
Program: <my 3rd party app>
Module: 4.7.1
File: global\qglobal.cpp
Line: 2262
ASSERT failure in QWidget: "Widgets must be created in the GUI
thread.", file kernel\qwidget.cpp line 1233
(Press Retry to debug the application)
Abort Retry Ignore
这让我觉得我没有做任何事情来正确关闭我的插件。我需要做什么才能正确关闭它?
更新: http ://doc.qt.nokia.com/solutions/4/qtwinmigrate/winmigrate-walkthrough.html说:
DLL 还必须确保它可以在同一进程中与其他基于 Qt 的 DLL 一起加载(在这种情况下,QApplication 对象可能已经存在),并且创建 QApplication 对象的 DLL 保持加载在内存中以避免其他 DLL 使用进程不再可用的内存。
所以我想知道是否存在一些问题,无论如何我都需要以某种方式保持原始 DLL 的加载?