How to fix error LNK2001 & LNK2019

﹥>﹥吖頭↗ 提交于 2020-06-02 08:08:29

问题


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));

I have defined ClassEvent::ClassEvent(unsigned int) and have no idea how to fix this LINK errors.

Any suggestion is appreciated.

Thank you

MORE INFO:

1>ProjectAAA.obj : error LNK2019: unresolved external symbol "public: __thiscall APP::X::ClassEvent::ClassEvent(unsigned int)" (??0ClassEvent@X@APP@@QAE@I@Z) referenced in function "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)

Now I have completely isolated the error:

1>ProjectAAA.obj : error LNK2019: unresolved external symbol "public: __thiscall APP::X::ClassEvent::ClassEvent(unsigned int)" (??0ClassEvent@X@APP@@QAE@I@Z) referenced in function "private: void __thiscall APP::X::ProjectAAA::TestGenerateEvents(void)" (?TestGenerateEvents@ProjectAAA@X@APP@@AAEXXZ)


回答1:


Your problem is having two ClassEvent.cpp files in your solution. When VC++ compiles your solution, it outputs all obj files in one directory and thus generates two ClassEvent.obj files. Whichever cpp is compiled later overwrites the former. This causes symbols from the first one being lost and invisible to the linker.

You can fix this issues by opening properties of one of the files, choosing C/C++ -> Output Files -> Object File Name and changing it to some non-colliding value (such as ClassEvent2.obj).

I believe this is a bug in Visual Studio but it hasn't been addressed in last 4 versions and is therefore likely to stay.




回答2:


After multiple testing, I found the solution.

Someone in the team excludes the ClassEvent.CPP from the project!!!




回答3:


In my case all begun working correctly after I changed the build architecture from x64 to x86 bit. Two days ago I had the same problem. This was caused by deploying my program to another computer. For some reason, which I don't know, the architecture settings have changed from x86 (as I write) to x64. PS. I used Visual Studio 2015;



来源:https://stackoverflow.com/questions/12825941/how-to-fix-error-lnk2001-lnk2019

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!