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/