串口中我要把奇偶校验等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. strchr,wcschr 及strrchr, wcsrchr,_tcschr,_tcsrchr函数

           strchr,wcschr 及strrchr, wcsrchr,_tcschr,_tcsrchr函数 (1) char *strchr( const char *string, int ...

  2. Catalan数总结

    财产: 前20条目:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, ...

  3. JavaScript中的分号插入机制

    原文:JavaScript中的分号插入机制 仅在}之前.一个或多个换行之后和程序输入的结尾被插入 也就是说你只能在一行.一个代码块和一段程序结束的地方省略分号. 也就是说你可以写如下代码 functi ...

  4. thinkphp学习笔记8—命名空间

    原文:thinkphp学习笔记8-命名空间 新版本(3.2)中采用命名空间的方式定义和加载类库文件,解决多个模块之间的冲突问题,并实现了更加高效的自动加载机制. 需要给类库定义所在的命名空间,命名空间 ...

  5. tmp1

    program1: Line # Mem usage Increment Line Contents================================================ 2 ...

  6. HTML5 Introduction

    1. HTML5 History HTML4.01 –1999.12 HTML5 – 2014.10– Done (8 years) In2006, WHATWG&W3C, decide to ...

  7. unity3d NGUI入门(描述和使用插件参数)

    我用NGUI它是3.5.4,Unity3d版本号是4.3.4f需要 NGUI3.5.4 下载NGUI,这是破解版的,用于学习.假设是商用.请支持正版 插件的导入 1.NGUI的导入,双击NGUI Ne ...

  8. 使用JAVA打开本地应用程序相关的文件

    在该项目中需要运行本地文件或应用程序,JDK6添加后Desktop类别.可以直接使用.这使得有可能在程序中无论什么应用程序可以打开的.例:打开pdf文件,当地福昕是默认打开.执行程序将使用福昕开放pd ...

  9. Vs2012 构建配置 Lua5.2.3

    随着手机游戏client程序员,当然,遇到这样的问题,该游戏已经提交出版.但第二天一早,发现有一个逻辑游戏BUG.怎么办,不严重,在一般情况下,非强制性的更新.假设一个严重BUG,他们将不得不强制更新 ...

  10. ASP.NET学习笔记--自己写的Login.aspx

    以前有大学有学过,但是没学好,现在准备完全自己动手做一个网站,学习一下ASP.NET 做一个登录页面,首先要有创建一个新的网站,添加Login.aspx,然后做出自己想要的DIV和CSS布局, 之后创 ...