找了很久原因,看到 @a410685489 和 @zhangruijerry 在文章[https://blog.youkuaiyun.com/qq61394323/article/details/43446977] 下面的回复,我实验了一下,发现问题确实就是QT Modules 没有调用成功导致的
按QT的文档说,需要在.pro文件里加上“QT += serialport”,而我们使用VS + QT add-in 无法添加这句程序(我试过在VS中添加.pro文件,然后在里面加上“QT += serialport” ,依然没用,如果有其他办法,欢迎交流),结果就是在编译时报错:
1>moc_QSerial.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl QSerialPort::metaObject(void)const " (?metaObject@QSerialPort@@UEBAPEBUQMetaObject@@XZ)
1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl QSerialPort::metaObject(void)const " (?metaObject@QSerialPort@@UEBAPEBUQMetaObject@@XZ)
1>QSerial.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl QSerialPort::metaObject(void)const " (?metaObject@QSerialPort@@UEBAPEBUQMetaObject@@XZ)
1>moc_QSerial.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __cdecl QSerialPort::qt_metacast(char const *)" (?qt_metacast@QSerialPort@@UEAAPEAXPEBD@Z)
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
等等很多“error LNK2001: 无法解析的外部符号”报错,那么我参考楼上的回复测试可行的解决方案,我这里详细写一下说明步骤:
1.右键项目名称:选择QT Project Settings
2.在弹出的对话框中的QT Modules 选项页面中,将Serial Port 给勾选上,此时可以编译通过:
1>------ 已启动生成: 项目: QSerial, 配置: Debug x64 ------
1> Moc'ing QSerial.h...
1> moc_QSerial.cpp
1> main.cpp
1> QSerial.cpp
1> qrc_QSerial.cpp
1> QSerial.vcxproj -> C:\Users\Administrator\Documents\Visual Studio 2015\Projects\QTConsoleApp\QSerial\x64\Debug\QSerial.exe
1> QSerial.vcxproj -> C:\Users\Administrator\Documents\Visual Studio 2015\Projects\QTConsoleApp\QSerial\x64\Debug\QSerial.pdb (Full PDB)
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
编译通过,以上