如何删除对mfc80.dll和msvcr80.dll的依赖?

时间:2010-12-18 20:27:21

标签: c++ visual-studio-2008

我的代码不使用MFC。但是,当我构建我的静态lib时,试图使用它的一方声明他们很难,因为我的代码库中有以下依赖项:

mfc80.dll和msvcr80.dll

有没有办法删除它们并重建?我正在使用vs2008。

2 个答案:

答案 0 :(得分:3)

默认情况下,静态库链接到动态运行时,这就是您的代码依赖于msvcr80.dll的原因。 Visual C ++程序必须链接到运行时。您可以更改静态库以使用静态运行时删除依赖项。这在配置属性中完成C / C ++ |代码生成|运行时库设置。但是,所选的运行时库必须与链接静态库的项目中使用的匹配。

您的代码可能依赖于mfc80.dll,因为您具有“配置属性”一般|使用MFC设置为MFC选项之一。

在我看来,Visual C ++(以及一般的Windows)是针对动态库和动态运行时而制作的。静态库看起来更像是一种黑客,因为它们具有惊人的数量限制,陷阱和特殊行为。更好地熟悉生产和消费动态库 - 从长远来看,它会更好。

答案 1 :(得分:0)

mscvr80.dll是发行版CRT。您可以通过将编译器设置为静态链接来删除此依赖项。最有可能的是,您正在尝试加载MFC,因为项目设置为使用MFC,即使您没有使用它。您可以在项目设置中删除它。

虽然,有问题为什么VS2008会产生mfc80.dll和mscvr80.dll依赖,而不是mfc90.dll和mscvr90.dll。