自定义控件问题:error: undefined reference to `XXX::XXXX‘

  • Post author:
  • Post category:其他


在这里插入图片描述

这个问题在linux下没有但在wind下出现,

为了让控件类可通过dll导出给其它工程使用,即HexEditor类可供外部调用,这里要将HexEditor类添加导入导出标识,打开控件类的头文件HexEditor.h,先添加:

#include <QtUiPlugin/QDesignerExportWidget>

再为控件类HexEditor添加宏QDESIGNER_WIDGET_EXPORT,如下图:

说明:宏QDESIGNER_WIDGET_EXPORT,最终就是在类前添加了dllexport 或dllexport,以用于导入和导出该类。

在这里插入图片描述

动态库的添加方法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

总结

1控件的版本一定要与编译Qt Creator的版本一致,不然编译的控件不会被Qt Creator识别,

2.一定要放Release版本的dll到Qt Creator的插件目录下,Debug版本的dll在Qt Creator的控件列表栏中也无法显示。

3.使用自定义控件时,当添加自定义控件的库时,一定要针对Debug版Release版本分别添加对应的库,不然在Debug中使用Release版的lib,dll时,编译时不会出错,但在运行时,会出现“QWidget: Must construct a QApplication before a QWidget” 的提示,并且程序无法成功运行。

4、自定义控件要生成Release的版本和Debug的版本,动态库放在lib文件夹下,源文件的lib文件夹中放.a文件,

5构成文件夹中直接放在.exe根文件下,编译时出错就应该在上一层目录放置。



版权声明:本文为zljlovesxy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。