5

我已经下载并编译了一个开源 C++ 应用程序Fhred

当我运行我编译的版本时,它需要 MSVCR100 和一些其他 dll 文件(Visual C++ 可再发行的一部分)。但是,当我运行原始预编译的 Frhed 可执行文件时,它在没有安装任何 C++ 可再发行包的情况下运行。

我是否必须修改任何编译选项才能取消程序与 C++ 可再发行库的链接?

4

2 回答 2

14

原始程序可能是静态链接的,而您正在尝试动态链接可执行文件,这会导致文件更小,但依赖于内部函数MSVCR100.dll(Microsoft C 运行时库的 v10),如果你是静态链接的。

要静态链接 DLL,请进入您的项目属性并将构建模式MDMT. 在 Visual Studio 2010/2012 中,该项目属性为 C/C++ -> 代码生成 -> 运行时库。

于 2011-08-08T01:29:32.057 回答
7

简短的答案是肯定的,更长的答案是,嗯,更长。

该库msvcr100.dllC 运行时的 DLL 实现的10.0版本(即 Visual Studio 2010 版本),您可能使用 /MD 编译选项请求了它。为避免使用运行时的动态链接版本,您可以改用 /MT 选项并静态链接运行时。

或者,您可以将 msvcr100.dll(和其他文件)与您的程序一起重新分发。

于 2011-08-08T01:38:03.150 回答