在DLL(VS2005 SP1)中使用CRT版本4053(/ MD)而不是最大的(5592)

时间:2011-04-26 12:22:38

标签: dll msvcrt

我希望你能帮助我。

我想使用CRT(/ MD)版本4053而不是Visual Studion 2005 SP1中的最新版本(5592)构建一个dll(静态链接其他非第三方库)。

我想知道使用以下method是否足以实现此目的。通过在解决方案的所有依赖项目中使用此方法,据我所知,dll的嵌入式清单被更改为声明所请求的CRT(和MFC,ATL)版本。这个假设是否正确?

只是确保dll的嵌入式清单足够说明所需的版本?在构建我的dll(使用忽略特定库)时,我是否还应该使用属于旧版(4053)CRT dll(msvcr80.dll)的正确导入库(msvcrt.lib)?这个导入库(msvcrt.lib)如何随着这样的次要版本更改而改变?

提前致谢!

Marc Maussen

1 个答案:

答案 0 :(得分:1)

CRT版本号在vc / include / crtassem.h中声明。对于MFC,它是vc / atlmfc / include / mfcassem.h。对于ATL,它是vc / atlmfc / include / atlassem.h。如果您在开发计算机上安装了安全更新,则会更新这些文件。在#including 任何 CRT标头之前使用#define _CRT_ASSEMBLY_VERSION x.y.z.w(等等)将覆盖该版本号。卸载安全更新也是如此。

这是不明智的,如果安装了安全更新,目标机器仍然将使用DLL的.5592版本。它部署了一个“发布者策略”,可以重定向版本号,确保旧程序自动修补。测试在客户机器上运行的版本当然总是最好的。并且运送具有已知安全问题的安装程序很少被客户所欣赏。