2012-03-04 11 views
8

Estoy haciendo un proyecto usando Visual C++ 2010 en Windows 7. Necesito usar la biblioteca ATL, de hecho instalé Windows WDK (versión 7600.16385.1) En particular uso el siguiente bibliotecas de WDKBiblioteca ATL: advertencia LNK4254 y LNK4078

  • setupapi.lib
  • atls.lib
  • atlsd.lib
  • atl.lib
  • atlthunk.lib

Compilación de mi código tengo las siguientes advertencias:

atls.lib (StdAfx.obj): advertencia LNK4254: la sección 'ATL' (50000040) reagrupadas en .rdata '(40000040) con diferentes atributos

atls.lib (stdafx.obj): LNK4078 de advertencia: múltiples secciones 'ATL' se encuentran con diferentes atributos (40301040)

¿alguien sabe cómo solucionarlo? Estoy preocupado por posibles pérdidas de memoria o por tener algún problema para acceder a mis datos. Gracias

+1

¿Está utilizando la versión Express de Visual Studio? ¿Alguna razón específica para vincular todas las libs mencionadas? 'atls' y' atlsd' son versiones de depuración y depuración de la misma biblioteca, es muy poco probable que necesite ambas. –

+0

@RomanR. Debe publicar eso como una respuesta ya que el uso de atls.lib y atlsd.lib es casi seguro que la causa de los errores. –

Respuesta

9

Tuve las mismas advertencias con Visual Studio 2010 Express Edition y el ATL tomado de WDK 7.1. Parece que las libs de atl se construyeron con diferentes opciones de las que su proyecto toma de atlbase.h. Cambié la configuración en atlbase.h

#pragma section("ATL$__a", read, shared) => #pragma section("ATL$__a", read) 
#pragma section("ATL$__z", read, shared) => #pragma section("ATL$__z", read) 
#pragma section("ATL$__m", read, shared) => #pragma section("ATL$__m", read) 

y las advertencias habían desaparecido.

+2

funcionó para mí. +1 –

Cuestiones relacionadas