• 7915阅读
  • 23回复

[提问]在Win10上用QT (qt6.2+MSVC)开发的应用程序在Win7上运行失败 [复制链接]

上一主题 下一主题
离线bergerac
 

只看楼主 倒序阅读 楼主  发表于: 2022-01-15

开发环境:Windows 10
开发工具:QT creator (qt6.2+MSVC)
运行环境:Windows  7
问题描述:
         在Win10上用QT (qt6.2+MSVC)开发的应用程序在Win7上运行,弹框报错"无法定位程序输入点CreateDXGIFactory2于动态链接库dxgi.dll上"和"无法定位程序输入点_free_Locale于动态链接库msvcrt.dll上"。用depends.exe查看Win7系统路径下的dxgi.dll,没有找到CreateDXGIFactory2函数,但Win10上的dxgi.dll有这个函数,msvcrt.dll也是同样的情况。
尝试的方案:
         1.我将Win10下的dxgi.dll和msvcrt.dll库拷贝到Win7下的应用程序目录下,错误依然存在,说明程序运行时还是去Win7系统目录下找对应的库了。
         2.原本打算将整个代码工程用MT方式编译,但看到QT WIKI(https://wiki.qt.io/Technical_FAQ)上不建议用MT方式编译。
我的问题是:
         1.在Win10上用QT (qt6.2+MSVC)开发的应用程序是否可以在Win7上运行?
         2.是否有办法能让应用程序运行时去访问指定目录下的系统库,而不是去Win7系统下查找这些库?
         3.是否有其他方法可以解决我的问题?
期待各位高手的答复,先谢谢大家!
离线liudianwu

只看该作者 1楼 发表于: 2022-01-15
qt6.2及以后不再支持win7,这个已经吵了一年了,你还没听到消息?
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线bergerac

只看该作者 2楼 发表于: 2022-01-15
回 liudianwu 的帖子
liudianwu:qt6.2及以后不再支持win7,这个已经吵了一年了,你还没听到消息? (2022-01-15 15:25) 

嗯,Win7上不支持QT6开发,但在Win10上用QT6编译打包好的应用程序是否支持在Win7上运行呢?
离线mh_0915

只看该作者 3楼 发表于: 2022-01-15
Qt6版本不支持win7,至于能不能运行,你得看是啥问题,是Qt的接口的问题那就无解了
生活与技术
思想与思考
离线bergerac

只看该作者 4楼 发表于: 2022-01-15
回 mh_0915 的帖子
mh_0915:Qt6版本不支持win7,至于能不能运行,你得看是啥问题,是Qt的接口的问题那就无解了
 (2022-01-15 16:55) 

是Win10上编译QT6用的msvc编译器所依赖的系统库dxgi.dll和msvcrt.dll里面的某些函数CreateDXGIFactory2和_free_Locale,在Win7运行时找了Win7系统下的dxgi.dll和msvcrt.dll(这些库不包含上面所说的函数),导致运行失败了。不知道有没有办法能让运行程序直接在运行目录下找这些系统库(我拷贝Win10的系统库),而不是去Win7系统路径下找这些库。
离线apud

只看该作者 5楼 发表于: 2022-01-15
Qt5.15.2 LTS版是最好的,编译的程序支持WIN7及以上的系统
再往前是Qt5.6.3,最低支持到XP系统,我们只需要保留这两个Qt版本即可。
更高的Qt6版本,其实说白了啥也不是,没明白更新它图什么?图它WIN7打不开然后被用户疯狂吐槽吗?
离线lixinwei

只看该作者 6楼 发表于: 2022-01-15
Qt 6.2 完全不支持Win7,既不能在WIN7上编译,也不能在WIN7上运行。请不要做无谓的尝试
离线fsu0413

只看该作者 7楼 发表于: 2022-01-16
回 apud 的帖子
apud:Qt5.15.2 LTS版是最好的,编译的程序支持WIN7及以上的系统
再往前是Qt5.6.3,最低支持到XP系统,我们只需要保留这两个Qt版本即可。
更高的Qt6版本,其实说白了啥也不是,没明白更新它图什么?图它WIN7打不开然后被用户疯狂吐槽吗? (2022-01-15 20:44) 

与时俱进啊哥们,微软都抛弃xp了,win7也就只剩最后一年付费支持了。
这俩系统最终一定会退市,到时候Qt6就成主流了。
离线fsu0413

只看该作者 8楼 发表于: 2022-01-16
回 bergerac 的帖子
bergerac:嗯,Win7上不支持QT6开发,但在Win10上用QT6编译打包好的应用程序是否支持在Win7上运行呢? (2022-01-15 15:45) 

Win7开发早在5.10(好像是吧)就不被官方支持了。
离线mh_0915

只看该作者 9楼 发表于: 2022-01-17
回 bergerac 的帖子
bergerac:是Win10上编译QT6用的msvc编译器所依赖的系统库dxgi.dll和msvcrt.dll里面的某些函数CreateDXGIFactory2和_free_Locale,在Win7运行时找了Win7系统下的dxgi.dll和msvcrt.dll(这些库不包含上面所说的函数),导致运行失败了。不知道有没有办法能让运行程序直接在运行目录下找这些 .. (2022-01-15 20:08) 

6楼的回复是对的,不要做无意义的尝试,而且没有必要用这么高版本Qt,不稳定不说,根本就不兼容大多数使用环境,只会搞死自己
生活与技术
思想与思考
离线apud

只看该作者 10楼 发表于: 2022-01-17
回 fsu0413 的帖子
fsu0413:与时俱进啊哥们,微软都抛弃xp了,win7也就只剩最后一年付费支持了。
这俩系统最终一定会退市,到时候Qt6就成主流了。 (2022-01-16 13:00)

你怕是不知道WIN7用户占比有多少,Qt6不会成为主流,因为等10年以后,WIN7用户渐渐减少,到时候直接入手Qt8它不香吗?
离线bergerac

只看该作者 11楼 发表于: 2022-01-17
回 mh_0915 的帖子
mh_0915:6楼的回复是对的,不要做无意义的尝试,而且没有必要用这么高版本Qt,不稳定不说,根本就不兼容大多数使用环境,只会搞死自己 (2022-01-17 08:59) 

客户要求用QT6.2,而且开发出来的程序要支持在Win7和Win10上运行,所以只好在Win10上开发,但开发打包的程序在Win7上运行就报上面那种错误了
离线fsu0413

只看该作者 12楼 发表于: 2022-01-17
回 bergerac 的帖子
bergerac:客户要求用QT6.2,而且开发出来的程序要支持在Win7和Win10上运行,所以只好在Win10上开发,但开发打包的程序在Win7上运行就报上面那种错误了 (2022-01-17 14:02) 

让你的客户直接跟Qt公司买这样的定制Qt6吧,社区支持可能不会有了。
离线fsu0413

只看该作者 13楼 发表于: 2022-01-17
回 apud 的帖子
apud:你怕是不知道WIN7用户占比有多少,Qt6不会成为主流,因为等10年以后,WIN7用户渐渐减少,到时候直接入手Qt8它不香吗?
 (2022-01-17 10:43) 

按现在微软对windows产品的态度来说,win10和11最终可能都会走向艰难退市。
等过几年win10 EOL,Qt7发布不支持Win10,可能Qt6一定会成为主流。
版本大升级直接上Qt8等肯定是不现实的。
离线fsu0413

只看该作者 14楼 发表于: 2022-01-17
回 bergerac 的帖子
bergerac:客户要求用QT6.2,而且开发出来的程序要支持在Win7和Win10上运行,所以只好在Win10上开发,但开发打包的程序在Win7上运行就报上面那种错误了 (2022-01-17 14:02) 

想到一个方法,就是把整个Qt库使用VC-LTL库作为标准库进行编译。
VC-LTL是一个建立在msvcrt上的接口兼容层,适用于将基于新API写的程序在旧平台上运行的情况。
我没用过这个库,不过看起来可能会满足你的需求,我觉得可以尝试一下。
离线bergerac

只看该作者 15楼 发表于: 2022-01-20
回 fsu0413 的帖子
fsu0413:想到一个方法,就是把整个Qt库使用VC-LTL库作为标准库进行编译。
VC-LTL是一个建立在msvcrt上的接口兼容层,适用于将基于新API写的程序在旧平台上运行的情况。
我没用过这个库,不过看起来可能会满足你的需求,我觉得可以尝试一下。 (2022-01-17 16:45) 

客户说不需要支持WIN7/8了
离线fsu0413

只看该作者 16楼 发表于: 2022-01-23
回 bergerac 的帖子
bergerac:客户说不需要支持WIN7/8了 (2022-01-20 14:34) 

还行
离线lovecomputer

只看该作者 17楼 发表于: 2022-02-27
最后怎么解决的?我也是QT打包到windows7运行,我想了N个办法,程序一直无法在win7上运行,总提示缺乏各种dll,都拷贝后,又提示0XC00007b错误,网上查询说这是缺少库,但不知道用哪些库?我的N个方法:
1、用windeploy
2、用process看依赖库,并全部拷贝到执行文件夹
开发方式做了4个组合,均未成功,但在开发机release目录直接运行是可以的
                         win10+QT5.15.2+MinGW32动态库方式
                          win10+QT5.15.2+MSVC2019的32动态库方式
                          win10+QT5.15.2+MSVC2019的32位静态库方式
                          win10+Visual Studio2019QT+MSVC2019的32动态库方式
离线fsu0413

只看该作者 18楼 发表于: 2022-03-01
回 lovecomputer 的帖子
lovecomputer:最后怎么解决的?我也是QT打包到windows7运行,我想了N个办法,程序一直无法在win7上运行,总提示缺乏各种dll,都拷贝后,又提示0XC00007b错误,网上查询说这是缺少库,但不知道用哪些库?我的N个方法:
1、用windeploy
2、用process看依赖库,并全部拷贝到执行文件夹
开发方式做 .. (2022-02-27 22:27) 

运行库有安装版的,叫vcredist啥啥啥的,在VS安装文件夹里就有,是EXE的,里面有全套vcrt和ucrt的运行库,安装完就不会缺了
离线hcaihao

只看该作者 19楼 发表于: 2022-03-11
回 fsu0413 的帖子
fsu0413:运行库有安装版的,叫vcredist啥啥啥的,在VS安装文件夹里就有,是EXE的,里面有全套vcrt和ucrt的运行库,安装完就不会缺了 (2022-03-01 06:54)

qt5.15.3也遇到同样的情况,7下无法运行,装vc运行库没用,5.15.2一切正常
离线yanchenyu

只看该作者 20楼 发表于: 2023-03-23
也不是完全无解,现在大佬们修改后,qt6.2.4已经可以在Win7上运行了。按我理解,你得现在win7上装上qt6.2.4,然后源代码编译过,解决dll自然就支持了。不过这种属于魔改,官方并不推荐。
https://forum.qt.io/topic/133002/qt-creator-6-0-1-and-qt-6-2-2-running-on-windows-7/17
离线bergerac

只看该作者 21楼 发表于: 01-19
回 yanchenyu 的帖子
yanchenyu:也不是完全无解,现在大佬们修改后,qt6.2.4已经可以在Win7上运行了。按我理解,你得现在win7上装上qt6.2.4,然后源代码编译过,解决dll自然就支持了。不过这种属于魔改,官方并不推荐。
https://forum.qt.io/topic/133002/qt-creator-6-0-1-and-qt-6-2-2-running-on-windows-7/17 (2023-03-23 17:35) 

客户愿意放弃win7/8了,直接让我们升QT6.2,只要支持win10就好
离线bergerac

只看该作者 22楼 发表于: 01-19
回 lovecomputer 的帖子
lovecomputer:最后怎么解决的?我也是QT打包到windows7运行,我想了N个办法,程序一直无法在win7上运行,总提示缺乏各种dll,都拷贝后,又提示0XC00007b错误,网上查询说这是缺少库,但不知道用哪些库?我的N个方法:
1、用windeploy
2、用process看依赖库,并全部拷贝到执行文件夹
开发方式做 .. (2022-02-27 22:27) 

没解决,说服客户放弃win7/8了,我们升QT6.2,只支持win10就好了
离线zonznews

只看该作者 23楼 发表于: 01-26
Qt 5.6.3 我支持这个版本
很棒
哈哈
快速回复
限100 字节
 
上一个 下一个