如何构建QTcore4.dll而不依赖于MSVCx80.dll?

时间:2009-06-26 18:23:58

标签: qt deployment msvcrt

我有一个Windows屏幕保护程序,我想使用QT库重新编译,以便我可以提供更多平台。 我在Vista和XP上部署时遇到了问题。

我使用MT静态编译我的屏幕保护程序,并运行依赖项检查程序。 结果是:

MyScreensaver.SCR需要多个DLLS,QTCORE4.DLL但不需要MSVCx80.DLL。 到目前为止,这很好。

我的问题是QTCORE4.DLL反过来,确实需要MSVCP80.DLL和MSVCR80.DLL 因此,我的应用程序无法在Vista系统上运行。

我可以构建QTCORE4.DLL以静态链接微软库(可能是Libcmt.lib吗?),这样我在MS CRT DLL中没有任何依赖项?

限制:

在尝试各个方向的解决方案之后,最可行的方法是使用QTCore4.dll和QTGui4.dll,但将它们静态链接到MSVCRT。这样,我的程序和QT DLL都不会依赖于MSVCRT dll。

有解决方案吗? (我是QT编程的新手)

谢谢你, 迈克尔

2 个答案:

答案 0 :(得分:1)

我认为他们是一致的,您的应用程序的部分将使用/ MD(d)和/ MT(d)部分进行编译,但如果您控制所有内容(包括第三方库),则使用/ MT非常安全(d)。

答案 1 :(得分:1)

您有两种选择:

  • 这些依赖项属于Microsoft Visual C++ Runtime库的一部分,您可以在安装屏幕中部署该库,用户可以静默安装它,默认情况下,Windows中不包含MSVCRT库,必须在installshield中部署运行时库,并在应用程序目录中复制Qt*.dll DLL。

  • 使用Static Linking Runtime和Qt主要依赖项,使用此选项可以获得一个可执行文件,但是对于Qt的静态编译,您必须拥有Qt商业许可证才能用于商业用途。