我想把一个dialog封装成dll,程序如下,没有实现任何功能,只是实验一下方法是否可行:
testdialog_global.h
#ifndef TESTDIALOG_GLOBAL_H
#define TESTDIALOG_GLOBAL_H
#include <Qt/qglobal.h>
#ifdef TESTDIALOG_LIB
# define TESTDIALOG_EXPORT Q_DECL_EXPORT
#else
# define TESTDIALOG_EXPORT Q_DECL_IMPORT
#endif
#endif // TESTDIALOG_GLOBAL_H
testdialog.h
#ifndef TESTDIALOG_H
#define TESTDIALOG_H
#include <qtgui/qdialog>
#include "testdialog_global.h"
class TESTDIALOG_EXPORT TestDialog : public QDialog
{
Q_OBJECT
public:
TestDialog();
~TestDialog();
private:
};
#endif // TESTDIALOG_H
testdialog.cpp
#include "testdialog.h"
TestDialog::TestDialog()
{
}
TestDialog::~TestDialog()
{
}
上面这些是dll中的代码
下面我又新建了一个工程
main.cpp
#include <QtGui/QApplication>
#include "..\..\TestDialog\TestDialog\testdialog.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TestDialog *dlg=new TestDialog;
dlg->show();
return a.exec();
}
编译连接都没有错误,但是运行的时候出现:
qwidget: must construct a qapplication before a qpaintdevice
不知道是什么原因啊?