【问题标题】:Visual Studio doesn't compile, ATL errorVisual Studio 无法编译,ATL 错误
【发布时间】:2014-09-15 00:33:50
【问题描述】:

我已卸载并重新安装了 Visual Studio 2013,但编译时总是出现同样的错误:

Error 1837 error LNK2019: unresolved external symbol "int __cdecl ATL::_AtlInitializeCriticalSectionEx(struct _RTL_CRITICAL_SECTION *,unsigned long,unsigned long)" (?_AtlInitializeCriticalSectionEx@ATL@@YAHPAU_RTL_CRITICAL_SECTION@@KK@Z) referenced in function "public: long __thiscall ATL::CComCriticalSection::Init(void)" (?Init@CComCriticalSection@ATL@@QAEJXZ)

【问题讨论】:

  • Unresolved external symbols in Visual Studio 2010 的可能重复项,以及许多其他“未解决的外部问题”问题。在发布新问题之前,请先进行一些研究。在这种情况下,搜索[c++] unresolved external symbol(使用方括号)。我链接的帖子有具体的分步说明。
  • 你忘记链接 atls.lib
  • 我从来没有链接过它,如果我忘记喜欢那个库,不应该只有 1 个未解析的外部符号吗?
  • 在发布到 StackOverflow 之前,您始终可以在网上搜索“LNK2019”。

标签: c++ windows visual-studio winapi atl


【解决方案1】:

AFAIK 此函数是 atls.lib 的成员,如果包含此库,请检查您的 /verbose inker 输出。

命令 link /dump /symbols atls.lib 显示此符号已在该文件中定义并包含在我的 ATL 项目中。

【讨论】:

    【解决方案2】:

    很可能,您正在尝试编译包含 他们自己的atl头文件实现,只是为了兼容性满意。在这种情况下,头文件中必须有一些预处理器定义,例如VBOX_COM_NO_ATL,它会告诉你根本不要使用 ATL。

    查找冲突 - 在您的源代码中包含 atlcore.h 并查看它是否与您的库/源代码中的其他 atl 标头冲突。

    【讨论】:

      猜你喜欢
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      相关资源
      最近更新 更多