2012-03-04 65 views
8

我正在使用Windows 7下的Visual C++ 2010制作一个项目。 我需要使用ATL库,事实上我安装了Windows WDK(版本7600.16385.1) 特别我使用以下从WDKATL库:警告LNK4254和LNK4078

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

编译我的代码,我有以下警告:

atls.lib(StdAfx.obj的):警告LNK4254:节 'ATL'(50000040)合并成具有不同属性的 '.rdata'(40000040)

atls.lib(StdAfx.obj的):警告LNK4078:具有不同属性找到多个 'ATL' 部分(40301040)

有谁知道如何解决它?我担心可能会发生内存泄漏或者访问我的数据时遇到问题。 谢谢

+1

您是否使用Express版本的Visual Studio?任何具体的理由来链接所有提到的库? 'atls'和'atlsd'是同一个库的版本和调试版本,你不太可能同时需要这两个版本。 – 2012-03-05 08:51:44

+0

@RomanR。您应该将其作为答案发布,因为使用atls.lib和atlsd.lib几乎肯定是导致错误的原因。 – 2012-03-11 17:10:15

回答

9

我对Visual Studio 2010 Express Edition和从WDK 7.1获取的ATL有相同的警告。看起来,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) 

并且警告消失了。

+2

为我工作。 +1 – 2014-06-10 19:11:49