qt报错lnk2019_2019咬文嚼字十大错误

qt报错lnk2019_2019咬文嚼字十大错误Qt错误:LNK2019:无法解析的外部符号原因及解决办法删除Qt中的一些用不到的函数或者添加一个新的.ui窗口的时候,我遇到了这个LINK2019无法解析的外部符号错误,网上查了半天可算解决了,写篇博客记录下。错误原因1:函数(一般是槽函数)在.h中声明,但却没有实现如图,我在自己的automatic.c文件中生成了一个按钮的点击处理函数,后面不想用了,把它删掉了,但是在automatic.h中忘记删掉声明了,于是系统编译报错。所以删掉声明就好。错误原因2:添加新的.ui窗体文件时编

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Qt 错误: LNK2019: 无法解析的外部符号 原因及解决办法

删除Qt中的一些用不到的函数或者添加一个新的.ui窗口的时候,我遇到了这个LINK2019无法解析的外部符号错误,网上查了半天可算解决了,写篇博客记录下。

错误原因1:函数(一般是槽函数)在.h中声明,但却没有实现

如图,我在自己的automatic.c文件中生成了一个按钮的点击处理函数,后面不想用了,把它删掉了,但是在automatic.h中忘记删掉声明了,于是系统编译报错。所以删掉声明就好。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

错误原因2:添加新的.ui窗体文件时编译器没有为它生成新的.obj文件而报错,需要重新执行qmake,而不是重新构建项目

首先我新建了一个界面,名为p1553B2,之后在automatic.h文件中,我include p1553B2的头文件,并且为界面类p1553B2声明了一个对象P1553B_2

#ifndef AUTOMATIC_H
#define AUTOMATIC_H

#include <QWidget>
#include <QtGui>
#include <QtWidgets>
#include "P1553B2.h" // 包含新窗体的头文件

namespace Ui { 
   
class Automatic;
}

class Automatic : public QWidget
{ 
   
    Q_OBJECT

public:
    explicit Automatic(QWidget *parent = 0);
    ~Automatic();

private slots:
    void on_P1553B2_clicked();
    
private:
    Ui::Automatic *ui;
    p1553B2 P1553B_2;  // 为新窗体声明一个对象
};

#endif // AUTOMATIC_H

之后,我在automatic.c中的一个button的响应函数中调用P1553B_2.show();让这个界面显示

void Automatic::on_P1553B2_clicked()
{ 
   
    P1553B_2.show();
}

编译的结果是错误,无法解析的外部符号
在这里插入图片描述
之后,我选择 构建->执行qmake,执行成功后再选择构建->构建项目Automatic3,就成功了,程序可以正常执行。
在这里插入图片描述

其它办法:删除debug或release路径下的文件或许也可以解决

网上有博客说删除debug或release(看你编译是用什么编译的了)下的全部文件有时可解决这个问题,我试了试,没成功,这个方法并不适用于我遇到的问题,不过也不失为一种可行方法。查看自己编译路径的方法见下图,选择shadow build意思是编译路径和程序路径分开,也即可以自己选择路径,勾掉的话编译文件会和程序源文件在一起。注意删除debug或者release文件的时候不要直接把这个文件夹删了,而是要把文件里面的内容删了,不然会报找不到文件或者其它谜之错误。
在这里插入图片描述
最后补充一句:看自己项目的编译器在左下角看
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185389.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 光流法小结[通俗易懂]

    光流法小结[通俗易懂]1.定义空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。也就是说,由空间域到图像平面的投影。而通俗来讲,把图像中的每一个点的瞬时速度和方向找出来就是光流。2.光流有什么用通过光流判断物体距离我们的远近。一般而言,远景的物体相对来说光流较小,而近景物体

  • WebSocket介绍和Socket的区别

    WebSocket介绍和Socket的区别  WebSocket介绍与原理WebSocketprotocol是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。——百度百科目的:即时通讯,替代轮询网站上的即时通讯是很常见的,比如网页的QQ,聊天系统等。按照以往的技术能力通常是采用轮询、Comet技术解决。HTTP协议是非持久化的,单向的网…

  • SM4加密解密_iunlocker解锁网站

    SM4加密解密_iunlocker解锁网站最近工作需要用到SM4加密解密算法,所以研究了一下。内容主要参考自:https://blog.csdn.net/weixin_34411563/article/details/86000381首先介绍一下SM4加密算法SM4是我们自己国家的一个分组密码算法,是国家密码管理局于2012年发布的。http://www.cnnic.net.cn/jscx/mixbz/sm4/,具体的加密很麻…

  • 《大话设计模式》笔记-模式0 简单工厂模式

    《大话设计模式》笔记-模式0 简单工厂模式

  • linux添加路由网关_linux删除默认网关

    linux添加路由网关_linux删除默认网关1、以前经常使用route命令添加和删除路由添加网关/设置网关:routeadd-net192.100.10.0netmask255.255.255.0deveth0#增加一条到达192.100.10.0的路由。屏蔽一条路由:routeadd-net192.100.10.0netmask255.255.255.0reject#增加一…

  • lucene定义自己的分词器将其分成单个字符

    lucene定义自己的分词器将其分成单个字符

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号