【发布时间】:2012-06-15 15:47:32
【问题描述】:
我必须从暴露DLLStart 和DLLStop 的dll 启动Qt GUI。 main中的正常(.exe)方法如下:
int main(int argc, char *argv[]) {
QApplication a(argc, argv); Dialog w;
w.show();
return a.exec();
}
问题是阻塞a.exec() 调用,因为在dll 中DLLStart 需要立即返回(见下文)。有什么解决方法吗?备注:问题与“Adding a Qt GUI to a Dynamic Library”有一些共同点,但并不完全相同。
/** start module */
int __stdcall DLLStart(void) {
..
QApplication qaDll(ac, av); Dialog w;
w.show();
qaDll.exec();
return 0; // never reached
}
/** stop module */
void __stdcall DLLStop(void) { }
【问题讨论】:
-
不知道。我只能建议你喜欢 opencv.org 代码中的 window_qt.cpp。它使用 Qt 来显示一个带有自己的事件循环的窗口,作为非 Qt 库的一部分。
-
DllStart是从DllMain调用的吗?还是从调用进程调用? -
@MB 任何提示在代表 (code.opencv.org/projects/opencv/repository) 中此文件所在的位置。搜索没有找到它,将有一个战利品。
-
@Synxis,不是从DllMain调用的,没有DllMain,所以是从调用进程调用的