错误LNK2019:多项目解决方案中未解析的外部符号

我有一个包含多个项目的visual studio解决方案。 其中之一,“MyProject”是一个静态库(.lib)。 该项目与许多其他课程一样,有两个class级“A”和“B”。

啊:

#pragma once class A { public: void foo(); }; 

A.cpp:

 #include Ah void A::foo(){ //do something } 

BH:

 #pragma once class B { public: void bar(); }; 

B.cpp:

 #include Bh #include Ah void B::bar(){ A a; a.foo(); } 

没有编译错误我得到链接错误:

OtherProject.lib(B.obj):错误LNK2019:未解析的外部符号“public:void __thiscall A :: foo(void)”(?foo @ A @@ QAE_NXZ)在函数“public:void __thiscall B :: bar”中引用(无效)“(?bar @ B @@ QAEXXZ)

一切似乎都很好。 我确实看到了A.cpp的编译过程。 只建立或链接项目“MyProject”很好。 但是在尝试构建整个解决方案时,我遇到了错误。

谢谢!

事实certificate,还有另一个项目OtherProject包含B类并使用它的函数bar() 。 我没有看到错误,并没有注意到在另一个项目中发生链接错误。 我所要做的就是在OtherProject包含OtherProject

在Visual-Studio中,大多数链接问题与忘记添加.cpp文件有关。

查看所有添加到项目中的实现文件。 然后清理并构建您的项目。

要么在A.cpp中注释掉这个方法的实现:

 void A::foo(){ //do something } 

或者A.cpp不包含在项目的构建中。 在解决方案资源管理器中右键单击A.cpp,然后选择“属性”以查看它是否从“生成”中排除。 在构建时,你看到了这个:

 1>Compiling... 1>A.cpp 

我在Visual Studio中输入了这段代码,效果很好。