为什么我的 C++ ATL 项目链接到 CIL 库中?

Why is my C++ ATL project linking in a CIL library?

我从 VC++2013 收到这个 linker 错误:

1>* CIL library *(* CIL module *) : 
error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodul.obj)

这是一个纯 C++ 项目,一个包含 "ATL simple object" 的 COM DLL,并且在 General 项目设置中选择了 "No Common Language Runtime Support"。我实际上只是通过向导创建了它,它与其他正在运行的 COM DLL 具有相同的设置。

我需要 link 使用 MFC 库,而不是 .NET 相关库。这个 CIL 库怎么可能最终出现在构建中?

好的,如果有人需要这个以供将来参考:

当 MFC headers 添加到 ATL 项目时会发生这种情况,而在 ATL 向导中创建项目期间未选择 使用 MFC

原因:生成的 dllmain.cpp 对于 MFC-enabled COM DLL 有点不同,但稍后在查看向导输出时很容易适应。