当前位置: 代码迷 >> QT开发 >> Qt怎么导出类
  详细解决方案

Qt怎么导出类

热度:94   发布时间:2016-04-25 03:46:03.0
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 

报错:
错误 2 error 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





  相关解决方案