Библиотека ATL: предупреждения LNK4254 и LNK4078 - PullRequest
9 голосов
/ 05 марта 2012

Я делаю проект с использованием Visual C ++ 2010 под Windows 7. Мне нужно использовать библиотеку ATL, фактически я установил Windows WDK (версия 7600.16385.1) В частности я использовал следующие библиотеки из WDK

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

При компиляции моего кода у меня появляются следующие предупреждения:

atls.lib (stdafx.obj): предупреждение LNK4254: раздел «ATL» (50000040) объединен в «.rdata» (40000040) с различными атрибутами

atls.lib (stdafx.obj): предупреждение LNK4078: найдено несколько разделов 'ATL' с разными атрибутами (40301040)

Кто-нибудь знает, как это исправить? Я обеспокоен возможными утечками памяти или проблемами с доступом к моим данным. Спасибо

1 Ответ

10 голосов
/ 09 января 2013

У меня были те же предупреждения с Visual Studio 2010 Express Edition и ATL, взятыми из WDK 7.1.Похоже, что библиотеки atl были созданы с другими параметрами, чем ваш проект берет из atlbase.h.Я изменил настройки в 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)

, и предупреждения исчезли.

...