在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重新编辑 ]