接手一个项目,管理硬件设备。甲方之前已经写了一个管理软件,用QT + VS写的。
我没搞过QT。基本一脸懵逼。幸亏有个嵌入式开发的大牛在旁指导和协助,最后得以编译、运行。
记录一下认识和过程
一、什么是QT?
QT是一种版本的C++。我记得以前微软有VC,visual c++,是C++没错,但它又有一些自己的类库,比如可以拖控件,方便开发桌面软件。按我的理解,VC是C++的超集;同样,QT也是C++的超集。
为啥要用QT呢?QT方便做界面,尤其是那种电气设备控制软件的界面,比如带仪表盘啥的。VC太out太难用了,就被QT取代了。而且,QT的一大卖点是跨平台,可以编写一次,到处编译。
二、如何编译和运行QT + VS项目?
首先当然是安装QT了;又由于该项目,采用QT依附于VS的方式,所以还要安装QT for Visual 的插件。
关键是,安装啥版本。
我的情况是,操作系统win10,VS是2022;然后大牛说这个项目用QT5.15.2可以编译,但他的VS是2019的。版本不一致,这可咋整?
来吧。鬼叫你穷,顶硬上。
三、安装QT
首先安装QT就很不顺。我想安装QT5.15.2,但安装界面上根本就没有这个版本。也没有离线版,因为说QT5.15之后就没有离线版了,必须线上安装。但现在安装界面又没得选,都是一堆QT6。
但神奇的是,同一个安装程序,大牛的界面上就能看到Q5.15.2。难道是账号的问题?我试着用他的账号,果然能看到,还有什么开源协议之类,而我那个账号,登录后看到的是商用字样。我都不知道怎么获得一个开源许可,只好先用他的账号安装。
安装进度何其慢!我下午16点开始安装,在WIFI信号好的环境下,一直到第二天清晨7点才安装完。而且选的内容并不多,只有for visual 2019 32位,和for visual 2019 64位,大小一共是1.2G。并没有for visual 2022的,装上去之后真的可以吗?心里七上八下。(事实证明,可以)
四、在VS安装QT插件
然后安装VS插件。这个插件,可以到官网下载,也可以在visual的扩展上直接安装。在visual的扩展上直接安装吧,因为这个插件本身也有好多个版本,让visual自己控制好了。
五、编译及运行
安装好VS插件后,需要在visual上设置QT的版本。
注意选择时候,要分清楚选32位还是64位。由于我那个项目用的是32位,结果我选了64位,总是编译报错,说找不到QT的库,报的都是
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 "__declspec(dllimport) void __cdecl qBadAlloc(void)" (__imp_?qBadAlloc@@YAXXZ),函数 "void __cdecl `dynamic initializer for 'ANGLE_X''(void)" (??__EANGLE_X@@YAXXZ) 中引用了该符号 RSN E:\mysoft\HMI\Task.lib(handlerthread.obj) 1
error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: virtual int __thiscall QThread
这类的错误。
五、小结
QT5.15.2可以结合VS2022一起跑。也许其他版本也可以。