如何在不依赖MSVCx80.dll的情况下构建QTcore4.dll?
我有一个windows屏幕保护程序,我想使用QT库重新编译它,这样我就可以为更多的平台提供。 我在Vista和XP上的部署面临问题 我用MT静态编译我的屏幕保护程序,并运行依赖项检查器。 结果是: MyScreensaver.SCR需要几个DLL,QTCORE4.DLL,但不需要MSVCx80.DLL。 到目前为止还可以 我的问题是,QTCORE4.DLL本身确实需要MSVCP80.DLL和MSVCR80.DLL 因此,我的应用程序不能在Vista系统上运行 我是否可以构建QTCORE4.DLL以静态链接到microsoft库(可能是Libcmt.lib?),以便在MS CRT DLL中没有任何依赖项 限制:如何在不依赖MSVCx80.dll的情况下构建QTcore4.dll?,qt,deployment,msvcrt,Qt,Deployment,Msvcrt,我有一个windows屏幕保护程序,我想使用QT库重新编译它,这样我就可以为更多的平台提供。 我在Vista和XP上的部署面临问题 我用MT静态编译我的屏幕保护程序,并运行依赖项检查器。 结果是: MyScreensaver.SCR需要几个DLL,QTCORE4.DLL,但不需要MSVCx80.DLL。 到目前为止还可以 我的问题是,QTCORE4.DLL本身确实需要MSVCP80.DLL和MSVCR80.DLL 因此,我的应用程序不能在Vista系统上运行 我是否可以构建QTCORE4.DLL
- 我不想让用户安装MS VC可再发行文件。屏幕保护程序只有1MB,仅仅为了一个屏幕保护程序就要求用户在他的计算机上做这么多的更改,真是可笑
- 我不想使用这个技巧将MS CRT DLL与屏幕保护程序放在同一个应用程序路径中,因为屏幕保护程序安装在system32中,我希望在那里安装尽可能少的文件
- 最后,我更喜欢生成一个单片程序,而不是一堆DLL
- 我尝试了QT的完整静态编译和链接,但这是不允许的(如果LGPL正确理解的话),而且根据以下内容,也不建议这样做:
Michael我认为他们一致认为应用程序的某些部分将使用/MD(d)编译,而另一些部分将使用/MT(d)编译,但是如果您控制所有内容(包括第三方库),那么使用/MT(d)就相当安全了。您有两个选择:
- 这些依赖项是库的一部分,您可以在installshield中部署该库,用户以静默方式安装它,默认情况下Windows中不包含MSVCRT库,您必须在installshield中部署运行时库,并在应用程序目录中复制
dllQt*.dll
- 使用运行时和Qt主依赖项的
,使用此选项您有一个可执行文件,但要静态编译Qt,您必须拥有商业使用的Qt商业许可证静态链接