【问题标题】:How to not link against msvcr100.dll?如何不链接到 msvcr100.dll?
【发布时间】:2012-07-23 18:54:33
【问题描述】:
我在 Visual Studio 10 中编译项目,编译后的可执行文件在 win 7 上运行良好,但由于缺少 msvcrt100.dll,它在 win xp 上无法运行。
我尝试使用“/NOTDEFAULTLIB”,但它也删除了我使用的其他一些外部库。
有没有办法不链接到最新的 Microsoft 运行时库?
提前致谢。
【问题讨论】:
标签:
c++
visual-studio-2010
compiler-construction
linker
msvcrt
【解决方案1】:
要不链接到 DLL,您必须静态链接到运行时。
为此,请转到 C/C++ 属性 -> 代码生成,然后在运行时库下从下拉列表中选择多线程 (/MT) 或多线程调试 (/MTd)。请注意,一旦您使用静态运行时库,您链接的所有其他库代码也必须使用相同的设置构建。而且您可能还必须将其他库添加到链接器 -> 附加依赖项下的输入。
【解决方案2】:
它只能在 Windows 7 机器上运行,之前有人安装了那个 DLL。
无需创建安装程序(使用安装项目即可轻松完成),一个简单的修复方法是将 msvcr100.dll 与您自己的二进制文件一起复制。如果您只有一个 EXE,那么简单的解决方案是链接 CRT 的静态版本。切换到 Release 构建,右键单击项目,Properties,C/C++,Code Generation,Runtime Library 设置。将其从默认的 /MD 更改为 /MT。