【问题标题】:ATL library :warning LNK4254 and LNK4078ATL 库:警告 LNK4254 和 LNK4078
【发布时间】:2012-03-22 12:08:18
【问题描述】:

我正在 Windows 7 下使用 Visual C++ 2010 制作项目。 我需要使用 ATL 库,实际上我安装了 Windows WDK(版本 7600.16385.1) 特别是我使用来自 WDK 的以下库

  • 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)

有人知道怎么解决吗?我担心可能的内存泄漏或访问我的数据时遇到问题。 谢谢

【问题讨论】:

  • 您使用的是 Express 版本的 Visual Studio 吗?链接所有提到的库的任何具体原因? atlsatlsd 是同一个库的发布版本和调试版本,您不太可能需要两者。
  • @RomanR。您应该将其发布为答案,因为使用 atls.lib 和 atlsd.lib 几乎可以肯定是错误的原因。

标签: c++ windows visual-c++ atl wdk


【解决方案1】:

我对 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)

警告消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多