【问题标题】:Why is my C++ ATL project linking in a CIL library?为什么我的 C++ ATL 项目在 CIL 库中链接?
【发布时间】:2018-02-22 12:25:55
【问题描述】:

我从 VC++2013 收到此链接器错误:

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

这是一个纯C++项目,一个包含“ATL简单对象”的COM DLL,在General项目设置中选择了“No Common Language Runtime Support”。我实际上只是通过向导创建了它,它与其他有效的 COM DLL 具有相同的设置。

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

【问题讨论】:

  • 通常头文件会指定要链接的库。尝试扫描所有包含的头文件,看看是否有任何原因。
  • @MarkRansom 谢谢。我认为错误信息实际上具有误导性,与通用中间语言完全无关。

标签: c++ visual-c++ visual-studio-2013 mfc cil


【解决方案1】:

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

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

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

【讨论】:

  • 有什么不同或适应时需要注意什么的提示吗?
  • @DougN 我不再使用 VS,而是创建两个新项目并比较它们的 dllmain.cpp 文件以查看差异。
猜你喜欢
  • 1970-01-01
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 2010-11-05
  • 2014-12-19
相关资源
最近更新 更多