使用VS2017+QT编译生成一个exe, 不想依赖dll库,所以修改成了静态编译,修改方法如下:
在VS中将项目 -> 属性 -> C/C++ -> 代码生成 -> 运行库 修改为/MT(release修改为/MT, debug 修改为/MTd. 并且把所有cpp文件都通过属性修改成了/MT
但修改后编译报下面错误
qtmain.lib(qtmain_win.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项:> 值“MD_DynamicRelease”不匹配值“MT_StaticRelease”
从这个错误可以看出,不匹配的是qtmain.lib, 但这个文件并不是我们自己的源文件,无法修改属性;
其实这是Qt库的配置,所以需要修改Qt相关配置
在VS中打开 项目-> 属性-> Qt Resource Compiler ->Override C/C++, 修改其中的 Running Library 的值位Multi-threaded(MT) 后保存即刻编译通过。