简体   繁体   中英

How to fix error LNK2001 & LNK2019

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)

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.

After multiple testing, I found the solution.

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

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;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM