【问题标题】:How to fix error LNK2001 & LNK2019如何修复错误 LNK2001 和 LNK2019
【发布时间】:2012-10-01 07:31:47
【问题描述】:

ProjectAAA.obj : error LNK2001: unresolved external symbol "public: __thiscall X::ClassEvent::ClassEvent(unsigned int)" (??0ClassEvent@X@@QAE@I@Z)

boost::shared_ptr<ClassEvent> bcfEvent(new ClassEvent((unsigned int) 10));

我已定义 ClassEvent::ClassEvent(unsigned int),但不知道如何修复此 LINK 错误。

欢迎提出任何建议。

谢谢

更多信息:

1>ProjectAAA.obj : 错误 LNK2019: 无法解析的外部符号“public: __thiscall APP::X::ClassEvent::ClassEvent(unsigned int)” (??0ClassEvent@X@APP@@QAE@I@Z)在函数“private: class std::vector,class std::allocator > > __thiscall APP::X::ProjectAAA::GenerateEvents(class std::map > > const &)”中引用 (?GenerateEvents@ProjectAAA@X@ APP@@AAE?AV?$vector@V?$shared_ptr@VClassEvent@X@APP@@@boost@@V?$allocator@V?$shared_ptr@VClassEvent@X@APP@@@boost@@@std@ @@std@@ABV?$map@VDate@APP@@IUEventAttributesMapCompare@ProjectAAA@X@2@V?$allocator@U?$pair@$$CBVDate@APP@@I@std@@@std@@@ 5@@Z)

现在我已经完全隔离了错误:

1>ProjectAAA.obj : 错误 LNK2019: 无法解析的外部符号“public: __thiscall APP::X::ClassEvent::ClassEvent(unsigned int)” (??0ClassEvent@X@APP@@QAE@I@Z)在函数“private: void __thiscall APP::X::ProjectAAA::TestGenerateEvents(void)”中引用 (?TestGenerateEvents@ProjectAAA@X@APP@@AAEXXZ)

【问题讨论】:

  • 需要更多信息。显示一个产生此错误消息的最小但完整的示例。
  • 简单代码可以正常工作。我有一个庞大的项目,我无法使用 ClassEvent 类中定义的任何函数。编译没问题,但链接总是报错。
  • 确保整个项目中只有一个名为 ClassEvent.cpp 的文件。如果不是这种情况,生成的 obj 文件将发生冲突,因此符号将丢失。
  • 您是否在命名空间X 中实现了您的ClassEvent::ClassEvent(unsigned int)?根据错误消息,它似乎没有嵌套在APP::X 中。

标签: c++ boost


【解决方案1】:

您的问题是您的解决方案中有两个ClassEvent.cpp 文件。当 VC++ 编译您的解决方案时,它会将所有 obj 文件输出到一个目录中,从而生成两个 ClassEvent.obj 文件。以后编译的任何 cpp 都会覆盖前者。这会导致第一个符号中的符号丢失并且对链接器不可见。

您可以通过打开其中一个文件的属性,选择 C/C++ -> 输出文件 -> 对象文件名并将其更改为某个非冲突值(例如 ClassEvent2.obj)来解决此问题。

我认为这是 Visual Studio 中的一个错误,但在最近的 4 个版本中尚未解决,因此很可能会保留。

【讨论】:

    【解决方案2】:

    经过多次测试,我找到了解决办法。

    团队中有人将 ClassEvent.CPP 从项目中排除!!!

    【讨论】:

      【解决方案3】:

      在我将构建架构从 x64 更改为 x86 位之后,所有这些都开始正常工作。两天前我遇到了同样的问题。这是由于将我的程序部署到另一台计算机造成的。出于某种我不知道的原因,架构设置已从 x86(如我所写)更改为 x64。 PS。我用的是 Visual Studio 2015;

      【讨论】:

        猜你喜欢
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多