Qt如何导出类
我的想法是想像VC的扩展dll一样导出可以使用的类,也就是这样的:
A.dll中:
classA:public QPushButton{...};
在别处调用这个dll时候可以从classA派生出新的类:
classB:public classA{...}
用的是Qt5.0的VS2010插件,建立了lib工程,碰到的问题是:
class MYDLL_EXPORT TestButton : public QPushButton
编译成功后在exe的程序中调用:
class DerivedButton : public TestButton
报错:
错误2error LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const TestButton ::staticMetaObject" (?staticMetaObject@TestButton@@2UQMetaObject@@B)
请问应该如何处理呢?
Qt?lib
[解决办法]
建议不要直接导出widget,定义一个接口类,你的widget实现这个接口,然后导出这个接口类
[解决办法]
导出接口类,可以减少对Qt库的依赖。可以参考VC++导出dll。
[解决办法]
//xxxxx_global.h
#if defined(MY_LIBRARY)
# define MY_EXPORT Q_DECL_EXPORT
#else
# define MY_EXPORT Q_DECL_IMPORT
#endif
//myclass.h
#include "xxxxx_global.h"
class MY_LIBRARY MyClass
{
}
//project.pro
DEFINES += MY_EXPORT