串口中我要把奇偶校验等enum数据对应写到一个ComboBox中去,所以需要在我的Settings类中加入一个函数用来转换。

这里,我首先在settings.h的class Settings中加上对该函数的声明

 class Settings : public QDialog
{
Q_OBJECT public:
explicit Settings(QWidget *parent = );
~Settings();
QString &stopbit2string(enum QSerialPort::StopBits stop);
QString &parity2string(enum QSerialPort::Parity parity); private slots:
void on_buttonBox_accepted();

然后在settings.cpp加上这两个函数的实现,壳

 QString &stopbit2string(enum QSerialPort::StopBits stop)
{
QString *ret = new QString("Eitd1");
return *ret;
} QString &parity2string(enum QSerialPort::Parity parity)
{
QString *ret = new QString("Eitd2");
return *ret;
}

这样编译就出错:

error LNK2019: 无法解析的外部符号 "public: class QString __cdecl Settings::parity2string(enum QSerialPort::Parity)"

这回就困惑了,由于我想到QT的编译依赖做得并不是很好,比如.pro文件可能不会随着工程文件的修改而变化,所以我检查了一下该文件,又把工程目录下的debug、release、makefile等都删除了,再清除了工程再重新构建,也还是出同样的错误。

在链接的时候无法解析外部符号,情况多数是这些情况:

1. 符号没有定义而被调用了

2. 符号在某个文件中被定义了,但是当前文件不知道,因为没有声明;

据此为出发点,我再去查找了一下C++对类方法的定义与调用的问题。

结果是有收获的,问题是我没有对Settings::parity2string定义,因为我的代码是用以下代码来定义的

 QString &parity2string(enum QSerialPort::Parity parity)

其实是我疏忽了,写C语言的我,忘记了C++的方法实现需要在前面加上类名,只要把这两个函数改成以下样子就可以了:

 QString & Settings::stopbit2string(enum QSerialPort::StopBits stop)
{
QString *ret = new QString("Eitd1");
return *ret;
} QString & Settings::parity2string(enum QSerialPort::Parity parity)
{
QString *ret = new QString("Eitd2");
return *ret;
}

QT中出现“无法解析的外部符号”错误的更多相关文章

  1. 在VS中使用类模板出现出现LNK2019: 无法解析的外部符号错误。

    在VS中使用类模板出现出现LNK2019: 无法解析的外部符号错误,应在一个.h文件中完成方法的声明与实现,不要将实现放在cpp文件里,VS貌似不支持类模板分离

  2. C++中无法解析的外部符号错误

      在编译C++程序的时候,如果引用了对应的头文件,但是调用一个函数的时候仍然出现" 无法解析的外部符号错误"的编译错误,比如: 无法解析的外部符号__imp__PathFileE ...

  3. 【解决】VS2013 + Qt 5.7(5.6适用)使用QSqlDatabase出现“无法解析的外部符号"错误

    原始日期: 2016-08-03 22:09  错误如下: error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscal ...

  4. colmap编译过程中出现,无法解析的外部符号错误 “__cdecl google::base::CheckOpMessageBuilder::ForVar1(void)”

    错误提示: >colmap.lib(matching.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: cl ...

  5. Qt中三种解析xml的方式

    在下面的随笔中,我会根据xml的结构,给出Qt中解析这个xml的三种方式的代码.虽然,这个代码时通过调用Qt的函数实现的,但是,很多开源的C++解析xml的库,甚至很多其他语言解析xml的库,都和下面 ...

  6. QT error LNK2019: 无法解析的外部符号

    一个见到那的错误,困扰了好几天了,今天才解决,记录下. 使用QT Creator建立项目,添加一个QT设计界面widget,命名为TestWidget.有ui,头文件(.h),源码文件(.cpp).在 ...

  7. Qt中使用DOM解析XML文件或者字符串二(实例)

    介绍 在Qt中提供了QtXml模块实现了对XML数据的处理,我们在Qt帮助中输入关键字QtXml Module,可以看到该模块的类表.在这里我们可以看到所有相关的类,它们主要是服务于两种操作XML文档 ...

  8. 关于VS中的无法解析的外部符号问题

    利用caffe的源码编译出的caffe.lib静态链接库里面就包含了源码里面的那些函数的接口i,所以如果在程序中使用的是源码的话,就不需要在链接器里面再添加此静态链接库了 对于无法解析的外部符号,首先 ...

  9. QT中PRO文件解析(转)

    From csdn blog: QT中PRO文件写法的详细介绍,很有用,很重要! 在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: ...

随机推荐

  1. 移动端 rem字体的使用demo

        <!doctype html> <html> <head> <meta charset="utf-8"> <title ...

  2. MyBatis与Spring设置callSettersOnNulls

    项目中集成Mybatis与Spring,使用的是Mybatis3.2.7,以及Spring4.0.5,mybatis-spring-1.2.2;由于项目组成员想要偷懒,将数据从DB中查询出来时须要将字 ...

  3. css3 menu 手机菜单1

    首先看一下效果图; 效果1,主要是 translateY(100px) -->translateY(0px);opacity:0;—>opacity: 1; 然后递归延迟 怕麻烦也可以自己 ...

  4. SWTBOK实践测试系列(2) --您将提交测试开发者版本号打回来了?

    开发商斗争非常多晚,提交测试的最终版本. 它们可以缓和.但噩耗传来很快,软件没有通过预测试测试团队(为了确保在测试过程,开发者提交的代码验证的基本功能或业务流程).开发王经理.快速找到负责预测试试验张 ...

  5. 工厂模式IDAL具体解释

    IDAL 一. IDAL主要功能: 1.这全然是"工厂模式"的一部分实现而已 2.这是一组接口类,当中包含了每一个要公开的数据訪问方法.为每一个数据库产品单独编写的DAL(数据訪问 ...

  6. 【iOS】多线程GCD

    GCD(Grand Central Dispatch) : 牛逼的中枢调度器.苹果自带,纯C语言实现,提供了许多且强大的函数,它能够提高代码的运行效率与多核的利用率. 一.GCD的基本使用 1.GCD ...

  7. ECLIPSE IDEA 调音 1

    为自己所用IDE进行jvm优 首先进行日志输出配置 Eclipse  改动eclipse.ini IDEA   改动 idea.exe.vmoptions 添加打印日志的配置參数 -XX:+Print ...

  8. Scrapy研究和探索(五岁以下儿童)——爬行自己主动多页(抢别人博客所有文章)

    首先.在教程(二)(http://blog.csdn.net/u012150179/article/details/32911511)中,研究的是爬取单个网页的方法.在教程(三)(http://blo ...

  9. iptables的CLUSTER target以太网交换机和想法

    周末热风,这个想法从未在我的心脏像样的雨一阵悲哀. 每到周末,我会抽出一周整夜的事情的总结,无论是工作.人生,或者在上班或在锯的方式方法,并听取了抑制书评,因为无雨,周六晚上,我决定好好睡一觉,再折腾 ...

  10. .NET中使用Redis(二)

    很久以前写了一篇文章 .NET中使用Redis 介绍了如何安装Redis服务端,以及如何在.NET中调用Redis读取数据.本文简单介绍如何设计NoSQL数据库,以及如何使用Redis来存储对象. 和 ...