我有一个Windows屏幕保护程序,我想使用QT库进行重新编译,以便我可以提供更多的平台。 我在Vista和XP上部署时遇到问题。如何构建不依赖于MSVCx80.dll的QTcore4.dll?
我用MT静态编译我的屏保,然后运行依赖检查器。 结果如下:
MyScreensaver.SCR需要多个DLLS,QTCORE4.DLL但不包含MSVCx80.DLL。 到目前为止这很好。
我的问题是,QTCORE4.DLL在其轮到,确实需要MSVCP80.DLL和MSVCR80.DLL 因此,我的应用程序不能在Vista系统上运行。
我可以建立QTCORE4.DLL以静态链接微软库(也许是Libcmt.lib?),以便我在MS CRT DLL中没有任何依赖关系吗?
限制:
我不希望有用户安装MS VC再发行。屏幕保护程序只有1 MB,并且要求用户在电脑上进行如此多的更改只是为了屏保。
我不想使用这个技巧将MS CRT dll与屏幕保护程序放在同一个应用程序路径中,因为屏幕保护程序安装在system32中,并且我想在其中安装最小可能的文件。
最后,我宁愿产生单片方案,而那一堆的DLL
我试图QT的一个完整的静态编译和链接,但是这是不允许的(如果我理解正确的,由在LGPL),并且也没有根据该建议:http://www.qtsoftware.com/developer/faqs/why-does-a-statically-built-qt-use-the-dynamic-visual-studio-runtime-libraries-do-i-need-to-deploy-those-with-my-application
试图在各个方向的解决方案后,似乎最可行的一个是使用QTCore4.dll和QTGui4.dll,但让他们静态链接到MSVCRT。这样,我的程序和QT DLL都不会依赖MSVCRT dll。
有没有解决方案? (我是新来QT编程)
谢谢 迈克尔
更新: 我已经建立QT静态,我已经包含在链接的QTcore.lib与/ MT建立我applitation也静态。 我现在看到屏幕保护程序依赖于MSVCR80.DLL,很可能是因为QT(QTcore.lib)的静态构建也取决于它。 MSVCR80.DLL对我来说是一个障碍,因为正如我上面所说的,我无法在XP和Vista上进行部署。 所以,现在的问题是: 是否有任何方式来建立一个QT应用程序而不依赖于MSVCR80.DLL? 感谢您的帮助 Michael – Mike 2009-07-08 18:11:51