VS2008 сгенерированный DLL имеет зависимость от двух разных версий сборки CRT - PullRequest
2 голосов
/ 08 марта 2011

Мои проекты 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 зависит от 2-х разных версий ЭЛТ-сборок. Как я могу узнать, что вызывает эту двойную зависимость, и исправить это? Я бы хотел, чтобы моя 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 здесь

...