ProjectAAA.obj:错误LNK2001:无法解析的外部符号“ 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:未解析的外部符号“公共:__ thiscall APP :: X :: ClassEvent :: ClassEvent(unsigned int)”(?? 0ClassEvent @ X @ APP @@ QAE @ I @ Z) “私有:类std :: vector,类std :: allocator>> __thiscall APP :: X :: ProjectAAA :: GenerateEvents(类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:未解析的外部符号“公共:__ thiscall APP :: X :: ClassEvent :: ClassEvent(unsigned int)”(?? 0ClassEvent @ X @ APP @@ QAE @ I @ Z) “私有:无效__thiscall APP :: X :: ProjectAAA :: TestGenerateEvents(void)”(?TestGenerateEvents @ ProjectAAA @ X @ APP @@ AAEXXZ)

最佳答案

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

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

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

关于c++ - 如何修复LNK2001和LNK2019错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12825941/

10-13 08:21