Qt中Debug版本exe运行提示无法找到Qt5Cored.dll或Qt5Widgetsd.dll

同一台主机中,Qtcreater运行过后,在debug文件中的exe文件无法运行,做如下提示。
在这里插入图片描述
在这里插入图片描述

这是由于缺乏各种支持exe的Qt库文件。

解决办法,在环境变量中加入:
D:\Qt\Qt5.9.5\5.9.5\mingw53_32\bin\

以上方法仅适用于Qt适用MinGW编译器编译的文件,如果是使用MSVC编译的话,需要在环境变量中加入:
D:\Qt\Qt5.9.5\5.9.5\msvc2015_64\bin

MinGW和MSVC是两种不同的编译器,故要添加相应的编译文件。

MinGW和MSVC的区别:
他们都是很好用的编译工具,但是他们兼容的并不好。当你的项目使用MinGW编译的使用,想要用一个MSVC编译生成的库时就会有问题。使用MinGW编译项目的时候,所使用的Lib也要是MinGW编译的。如果你只是开发Window平台的软件时,最好用Qt MSVC组合,这样可以使用大量的第三方lib,还有很多的构建指令,毕竟window上MSVC才是王道。

编码的问题,QT5的Qstring默认是UTF8格式,QT5极力推介把源码用UTF8格式存储。 但是MSVC只支持带BOM的UTF8格式,qmake不支持带BOM的UTF8格式,只能用GBK。这样的话,用qt5,每次都要Qstring::fromLocal8bit(“我是中国人”);况且就算BOM问题解决了,源代码是UTF8了。MSVC的执行编码也是GBK。这个问题这里有一些探讨

关于Qt中string类具体的存储问题,可参看下面的博文,很详细:
https://blog.csdn.net/dbzhang800/article/details/7540905#comments

LNK2005是Visual Studio编译器的一个错误代码,它表示在链接时出现了重复定义的符号。而qt5widgetsd.lib是Qt框架的一个库文件。 出现LNK2005错误通常有两种情况: 1. 在代码多次定义了同一个符号:这意味着在项目有多个文件或库文件都包含了相同的函数或变量的定义。此时,编译器无法确定使用哪个定义,从而导致LNK2005错误。解决办法是在代码将多余的定义删除或使用头文件的extern关键字外部声明。 2. 链接的库文件有多个相同的符号:这意味着在引入的库文件存在相同的函数或变量的定义。出现这种情况可能是由于引入了不同版本或者重复的库文件,解决办法是只引入正确版本的库文件,或者删除重复引入的库文件。 对于lnk2005 qt5widgetsd.lib错误,可以尝试以下解决方法: 1. 确保项目只引入了一次Qt5Widgets库文件,避免重复引入。 2. 检查项目是否有其他库文件或头文件多次引用了Qt5Widgets库文件的定义。 3. 若项目有自定义的代码文件,可以检查是否在代码多次定义了与Qt5Widgets库文件相同的函数或变量,如有需要删除多余的定义或使用extern关键字进行外部声明。 4. 如果以上方法都没有解决问题,可能是与Qt版本兼容性有关,可以尝试升级或降级Qt框架的版本,或者更新Visual Studio的补丁和更新。 综上所述,LNK2005错误是由于重复定义的符号导致的,在解决时需要检查项目的代码文件、引入的库文件和库文件的版本兼容性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值