Qt依赖UG库开发遇到的坑---kalrry
- 一、依赖引入坑
- 二、Qt在Debug时报错
- 1、编译器是 **MSVC** 还是 **MinGW**
- 2、编译器 32位 还是 64位
- 三、Qt+MSVC编译后中文乱码
- 四、不能将const char*类型的值分配到const* 类型的实体
- 五、debug编译后再发布程序无法运行
- 六、Qt 环境配置提示警告
- 警告一、
- 警告二、
- 七、Qt5初次导入msvc2017_64编译器遇到的问题记录
- 八、Qt通过Debug编译后再发布,程序报错
一、依赖引入坑
.pro文件中增加引入
//$$quote()坑
//这里的$$quote()是当路径中有空格时候用此方式引入,没有空格可直接引用
//简单理解,当路径有空格需用$$quote方式引用,不然Qt无法识别
INCLUDEPATH += $$quote(D:\ProgramFiles\UG\NX 10.0\UGOPEN) //必须引入
INCLUDEPATH += $$quote(D:\ProgramFiles\UG\NX 10.0\UGOPENPP) //视情况而定
//凡是程序需要的即使在UGOPEN里包含,也必须用LIBS引入详细lib库名称,否则会报错
LIBS += $$quote(D:\ProgramFiles\UG\NX 10.0\UGOPEN\libufun.lib)
LIBS += $$quote(D:\ProgramFiles\UG\NX 10.0\UGOPEN\libufun_cae.lib)
LIBS += ......
//UGOPEN文件下有多个lib静态库不知道的情况下最好全引入,如果知道引用的具体名字,可按需引入
二、Qt在Debug时报错
1、编译器是 MSVC 还是 MinGW
遇到上述问题,其实是编译器问题,因为 MSVC 与 MinGW 编译出来的库文件存在兼容性问题,当你的项目使用 MinGW 编译的使用,想要用一个 MSVC 编译生成的库时就会出现如上报错。
该错误说后面这一串东西没定义,但我们按住 Ctrl 点进去发现可以正常链接到,所以并不是我们引用问题。
原因是 UG 的库文件都来自 MSVC 编译的,所以 Qt 在 Debug 时候的编译器要配置成 MSVC 才可以正常识别。
Qt配置MSVC传送门
2、编译器 32位 还是 64位
MSVC 32位 报错就换 MSVC 64位,反之
Qt配置MSVC传送门
三、Qt+MSVC编译后中文乱码
在Qt头文件中添加如下代码即可解决
该代码仅支持VS环境
但我们发现在QT中也管用,原因可能就是我们最终是Qt+msvc编译的,可能间接性属于vs环境
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")// 该指令仅支持VS环境(但在QT中不知道为什么还管用)
#endif
四、不能将const char类型的值分配到const 类型的实体
用MSVC编译时候遇到如上问题
char* Height = "100"; //报错
char* Diam = (char*)"100"; //用(char*)强制转换后可用,虽然还有警告
五、debug编译后再发布程序无法运行
报如下错误
解决办法:
用release模式编译后发布,居然不报错了,虽然很蒙,但是能跑就行
六、Qt 环境配置提示警告
警告一、
Qt 环境配置提示警告Qt Cmake configuration has no path to a C++ compiler set, even though the toolkit has a v
进入Qt->工具->选项->Kits->构建套件(Kit)窗口后
发现黄色警告
Qt Cmake configuration has no path to a C++ compiler set, even though the toolkit has a valid tool chain
Qt Cmake配置没有到c++编译器集的路径,即使工具箱有一个有效的工具链
解决方案:
进入vs安装目录 我这里是 D:\Program Files\Microsoft Visual Studio\Common7\Tools
运行下面目录下的 vsvars32.bat 脚本,2017以后版本执行 VsDevCmd.bat 脚本即可
进一步解释:
VsDevCmd.bat 设置 Visual Studio 相关的环境变量,这些变量是编译、链接和构建命令行上的应用程序所必需的。
vs2017之后使用的都是VsDevCmd.bat
vs2015及以前使用的是vsvars32.bat
此时会发现C++解决了,还有C报错,Qt Cmake configuration has no path to a C compiler set, even though the toolkit has a valid tool chain
解决方案:重启电脑一般就可解决,即使不重启c报错,也可以运行程序;
QT5+VS2019 构建套件(Kit)黄色感叹号问题解决
参考1
参考2
警告二、
MSVC编译器版本不同,只需要改成相同版本即可
例如vs是2019,qt是2017,默认情况下会报警告版本不同,此时需要同时将编译器设置为2017
七、Qt5初次导入msvc2017_64编译器遇到的问题记录
Qt 5设置 MSVC编译器
参考1
不知道 Windows Software Development Kit 在哪的看下面
参考2
八、Qt通过Debug编译后再发布,程序报错
Qt通过Debug编译后调试正常但是发布后,程序运行不起来,并报如下错误
此时我们可以尝试用release模式编译后再发布,不出其它意外,应该可以正常运行了(大部分情况是用了MSVC编译环境导致的,也就是结合vs的MSVC编译时用release发布,其它Mingw一般debug后发布就可以,具体原因未深入了解,有大佬看到望补充)
Qt:项目发布Debug和Release版的区别:
- Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂),便于程序员调试。Debug模式下生成两个文件,除了.exe或.dll文件外,还有一个.pdb文件,该文件记录了代码中断点等调试信息
- Release:发布版本,不对源代码进行调试,编译时对应用程序的速度进行优化,使得程序在代码大小和运行速度上都是最优的。(调试信息可在单独的PDB文件中生成)。Release模式下生成一个文件.exe或.dll文件
- 正常流程理论上是Debug->Release->发布