• 7455阅读
  • 4回复

如何导出dll中的QWidget [复制链接]

上一主题 下一主题
离线sanghk
 

只看楼主 倒序阅读 楼主  发表于: 2009-01-07
— 本帖被 XChinux 执行加亮操作(2009-01-08) —
      在windows下使用VC编写QT的程序。有两个工程,A及B,A为exe,B为dll,在A中使用B。
B在有个基于QWdget的类,Demowidget,如果把Demowidget定义为DLLLIB_EXPORT,则编译不过去,提示staticMetaObject不能导出。如果不加DLLLIB_EXPORT,则可以编译过去,但想使用Demowidget时,必须通过其它的导出函数来得到Demowidget实例。 
  如何能导出Demowidget?
下面是出错信息:
2>moc_demowidget.cpp
2>.\GeneratedFiles\Debug\moc_demowidget.cpp(37) : warning C4273: 'staticMetaObject' : inconsistent dll linkage
2>        e:\demos\segydemo\mainprog\generatedfiles\debug\../../../dllLib/demowidget.h(17) : see previous definition of 'public: static QMetaObject const Demowidget::staticMetaObject'
2>.\GeneratedFiles\Debug\moc_demowidget.cpp(37) : error C2491: 'Demowidget::staticMetaObject' : definition of dllimport static data member not allowed
2>.\GeneratedFiles\Debug\moc_demowidget.cpp(43) : warning C4273: 'Demowidget::metaObject' : inconsistent dll linkage
2>        e:\demos\segydemo\mainprog\generatedfiles\debug\../../../dllLib/demowidget.h(17) : see previous definition of 'metaObject'
2>.\GeneratedFiles\Debug\moc_demowidget.cpp(48) : warning C4273: 'Demowidget::qt_metacast' : inconsistent dll linkage
2>        e:\demos\segydemo\mainprog\generatedfiles\debug\../../../dllLib/demowidget.h(17) : see previous definition of 'qt_metacast'
2>.\GeneratedFiles\Debug\moc_demowidget.cpp(56) : warning C4273: 'Demowidget::qt_metacall' : inconsistent dll linkage
2>        e:\demos\segydemo\mainprog\generatedfiles\debug\../../../dllLib/demowidget.h(17) : see previous definition of 'qt_metacall'
[ 此贴被sanghk在2009-01-07 15:04重新编辑 ]
离线sanghk

只看该作者 1楼 发表于: 2009-01-07
自己顶起来!!!
离线xjcook

只看该作者 2楼 发表于: 2009-01-07
widget是可以导出的,qtGui不是导出了那么多,
如果你的不能导出,不是widget的问题,找找其他的地方。
离线sanghk

只看该作者 3楼 发表于: 2009-01-07
我不知道是可以导出的,但不知道如何导出?定义的类很简单类似:
class Q_DECL_EXPORT MyWidget :public Qwidget
{
    Q_OBJECT
public:

};
离线sanghk

只看该作者 4楼 发表于: 2009-01-16
自己解决了,我是在.h 文件中定义的从QwtPlot继承的类,要增加预定义:QTDLL 及QwtDll
快速回复
限100 字节
 
上一个 下一个