VS2008生成的dll依赖于两个不同版本的CRT程序集

时间:2011-03-08 15:36:38

标签: visual-studio-2008 dependencies crt .net-assembly vc90

我的VS2008项目生成一个dll并链接另外两个静态库。这是生成的清单:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>

所以我的dll取决于两个不同版本的CRT组件。我如何才能知道导致这种双重依赖的原因并纠正这个问题?我希望我的dll绑定到程序集的原始版本,因为它是vc9.0的默认行为。

我的代码包含任何定义为绑定到特定程序集版本的定义

#define _BIND_TO_CURRENT_CRT_VERSION 1
#define _BIND_TO_CURRENT_ATL_VERSION 1
#define _BIND_TO_CURRENT_MFC_VERSION 1
#define _BIND_TO_CURRENT_OPENMP_VERSION 1

#define _BIND_TO_CURRENT_VCLIBS_VERSION 1;

在msdn网站here

上进行了描述

0 个答案:

没有答案