2

当我在 Visual Studio 2008 SP1 中使用 ATL 标头创建一个新的 Win32 项目(Windows 应用程序)时,仅包含<atlbase.h>给我这个警告:

TempATL.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes

当我还包含<atlapp.h>来自 WTL 时,我会收到以下额外警告:

atlsd.lib(Externs.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
atlsd.lib(AtlDebugAPI.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
atlsd.lib(Allocate.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
atlsd.lib(atltrace.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
atlsd.lib(AtlTraceModuleManager.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes

解决这些警告的正确方法是什么?


编辑:

我刚刚发现这些正在发生,因为我已将 Visual Studio 2008 切换为将 Visual C++ 2010编译器与 2008一起使用。如果有人知道如何解决这个问题,不是切换回旧的编译器,那么请发帖。:)

4

1 回答 1

2

我猜你正在运行 MSVC 的 Express 版本并使用 Windows SDK 中的 atl。要摆脱这些警告,只需添加/ignore:4254 /ignore:4078链接器的附加命令行选项。

请参阅:WDK 7.1 中包含的 ATL 8.0 使链接器生成近八百个 LNK4254...

于 2012-04-12T23:23:15.583 回答