我有一个静态编译的Qt应用程序,也就是说,在执行时不需要所有的Qt DLL。
但是,我的应用程序仍然需要Microsoft的DLL :特别是MSVCP100.DLL和MSVCR100.DLL。我如何编译我的应用程序以使这两个DLL不再需要?我需要在.pro文件中的某个地方设置一些标志吗?我对Qt静态编译有点迷惑,所以欢迎任何建议。
发布于 2011-03-23 22:57:56
您可能无法删除这些依赖项,因为这些DLL包括C/C++运行时环境,如STD函数和类,以及Windows特定的函数(它们进一步依赖于kernel32.dll)。因此,为了删除它们,您需要静态地链接整个C/C++运行时和windows操作系统的某些部分...
无论如何,这都无关紧要,因为这些DLL将出现在几乎每一台win pc上。
发布于 2013-06-11 16:49:40
问题是,使用Qt时,会在来自qmake变量的命令行选项之前添加许多命令行选项。解决方案是删除这些变量。
这为我做了这个把戏:
QMAKE_CFLAGS_RELEASE += /MT
QMAKE_CXXFLAGS_RELEASE += /MT
QMAKE_CFLAGS_RELEASE -= -MD
QMAKE_CXXFLAGS_RELEASE -= -MD要删除的选项必须与完全匹配。例如,/MD和-MD被视为不同的选项。
发布于 2011-03-23 23:30:17
感谢stijn提醒我..。我忘记了链接器标志在MSVS的编译器设置中,所以我没有找到它们,并认为这是不可能的……
但是,这些代码行应该可以完成任务,因为它们告诉链接器使用多线程静态链接的运行时库:
QMAKE_CFLAGS_RELEASE += /MT
QMAKE_CXXFLAGS_RELEASE += /MT
QMAKE_CFLAGS_DEBUG += /MTd
QMAKE_CXXFLAGS_DEBUG += /MTdhttps://stackoverflow.com/questions/5406639
复制相似问题