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&gt; ProjectAAA.obj:错误LNK2019:未解析的外部符号“public:__thiscall APP :: X :: ClassEvent :: ClassEvent(unsigned int)”(?? 0ClassEvent @ X @ APP @@ QAE @ I @ Z)在函数“private:class std :: vector,class std :: allocator&gt;&gt; __thiscall APP :: X :: ProjectAAA :: GenerateEvents(class std :: map&gt;&gt; const&amp;)”中引用“(?GenerateEvents @ ProjectAAA @ X @ APP @@ AAE?AV?$ @矢量V'$ @的shared_ptr @ VClassEvent @ X APP @@@升压@@ V'$ @分配器V'$ @的shared_ptr @ VClassEvent @ X APP @@@升压@@@ STD @@@ STD @@ ABV?$地图@ VDate @ @@ APP @ IUEventAttributesMapCompare @ ProjectAAA X 2 @ V'$分配器@ U&$ @配对$$ CBVDate @ @@ APP I @ @@性病@std @@@ 5 @@ Z)
现在我完全隔离了错误:
1&gt; 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)
答案 0 :(得分:1)
您的问题是解决方案中有两个ClassEvent.cpp
个文件。当VC ++编译您的解决方案时,它会在一个目录中输出所有obj文件,从而生成两个ClassEvent.obj文件。无论后来编译哪个cpp都会覆盖前者。这会导致第一个符号丢失并且链接器不可见。
您可以通过打开其中一个文件的属性来解决此问题,选择C / C ++ - &gt;输出文件 - &gt;对象文件名并将其更改为某些非碰撞值(例如ClassEvent2.obj
)。
我认为这是Visual Studio中的一个错误,但它在最近4个版本中没有得到解决,因此可能会停留。
答案 1 :(得分:1)
经过多次测试,我找到了解决方案。
团队中有人将项目中的ClassEvent.CPP排除在外!!!
答案 2 :(得分:0)
在我的情况下,在将构建体系结构从 x64 更改为 x86 位后,所有内容都开始正常工作。两天前我遇到了同样的问题。这是因为将我的程序部署到另一台计算机。由于某些原因,我不知道,架构设置已从x86(我写)改为x64。 PS。我使用Visual Studio 2015;