我已经下载并编译了一个开源C ++应用程序Frhed。
当我运行我编译的版本时,它需要MSVCR100和其他一些dll文件(Visual C ++可再发行组件的一部分)。但是,当我运行原始预编译的Frhed可执行文件时,它运行时没有安装任何C ++可再发行组件包。
我是否必须修改任何编译选项才能取消程序与C ++可再发行库的链接?
答案 0 :(得分:14)
原始程序可能是静态链接,而您尝试动态链接可执行文件,这会导致文件较小,但依赖于MSVCR100.dll
内的函数(v10) Microsoft C运行时库),如果您是静态链接,它将包含在可执行文件中。
要静态链接DLL,请转到项目属性并将构建模式从MD
更改为MT
。在Visual Studio 2010/2012中,该项目属性为C / C ++ - >代码生成 - >运行时库。
答案 1 :(得分:7)
简短的回答是是,答案越长,答案就越长。
库msvcr100.dll
是您可能使用/ MD编译选项请求的DLL implementation of the C run-time的 10.0 版本(即Visual Studio 2010版本)。要避免使用动态链接版本的运行时,可以使用/ MT选项,并静态链接运行时。
或者,您可以redistribute msvcr100.dll (and other files)和您的计划一起使用。