0

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:函数中引用的未解析外部符号“public:__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:函数中引用的未解析外部符号“public:__thiscall APP::X::ClassEvent::ClassEvent(unsigned int)”(??0ClassEvent@X@APP@@QAE@I@Z) “私有:void __thiscall APP::X::ProjectAAA::TestGenerateEvents(void)”(?TestGenerateEvents@ProjectAAA@X@APP@@AAEXXZ)

4

3 回答 3

1

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

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

我相信这是 Visual Studio 中的一个错误,但它在最近 4 个版本中没有得到解决,因此很可能会继续存在。

于 2012-10-10T19:29:24.697 回答
1

经过多次测试,我找到了解决方案。

团队中有人将 ClassEvent.CPP 排除在项目之外!!!

于 2012-10-10T19:42:19.210 回答
0

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;

于 2018-02-15T18:45:47.810 回答