首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编译Qt应用程序,使其不需要微软的dll?

如何编译Qt应用程序,使其不需要微软的dll?
EN

Stack Overflow用户
提问于 2011-03-23 22:19:21
回答 3查看 3.6K关注 0票数 2

我有一个静态编译的Qt应用程序,也就是说,在执行时不需要所有的Qt DLL。

但是,我的应用程序仍然需要Microsoft的DLL :特别是MSVCP100.DLL和MSVCR100.DLL。我如何编译我的应用程序以使这两个DLL不再需要?我需要在.pro文件中的某个地方设置一些标志吗?我对Qt静态编译有点迷惑,所以欢迎任何建议。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-23 22:57:56

您可能无法删除这些依赖项,因为这些DLL包括C/C++运行时环境,如STD函数和类,以及Windows特定的函数(它们进一步依赖于kernel32.dll)。因此,为了删除它们,您需要静态地链接整个C/C++运行时和windows操作系统的某些部分...

无论如何,这都无关紧要,因为这些DLL将出现在几乎每一台win pc上。

票数 -1
EN

Stack Overflow用户

发布于 2013-06-11 16:49:40

问题是,使用Qt时,会在来自qmake变量的命令行选项之前添加许多命令行选项。解决方案是删除这些变量。

这为我做了这个把戏:

代码语言:javascript
复制
QMAKE_CFLAGS_RELEASE += /MT
QMAKE_CXXFLAGS_RELEASE += /MT
QMAKE_CFLAGS_RELEASE -= -MD
QMAKE_CXXFLAGS_RELEASE -= -MD

要删除的选项必须与完全匹配。例如,/MD-MD被视为不同的选项。

票数 8
EN

Stack Overflow用户

发布于 2011-03-23 23:30:17

感谢stijn提醒我..。我忘记了链接器标志在MSVS的编译器设置中,所以我没有找到它们,并认为这是不可能的……

但是,这些代码行应该可以完成任务,因为它们告诉链接器使用多线程静态链接的运行时库:

代码语言:javascript
复制
QMAKE_CFLAGS_RELEASE += /MT
QMAKE_CXXFLAGS_RELEASE += /MT
QMAKE_CFLAGS_DEBUG += /MTd
QMAKE_CXXFLAGS_DEBUG += /MTd
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5406639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档