错误LNK2019:在多个项目溶液解析的外部符号(error LNK2019: unresolved

2019-10-17 21:43发布

我有多个项目Visual Studio解决方案。 他们中的一个,“MyProject的”是一个静态库(.LIB)。 这个项目,许多其他类中有两个等级“A”和“B”。

啊:

#pragma once

class A
{
public:
    void foo();
};

A.cpp:

#include A.h

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

BH:

#pragma once

class B
{
public:
    void bar();
};

B.cpp:

#include B.h
#include A.h

void B::bar(){
        A a;
        a.foo();
}

如果没有编译错误,我得到的链接错误:

OtherProject.lib(B.OBJ):错误LNK2019:无法解析的外部符号 “市民:无效__thiscall A :: foo的(无效)” 函数引用“公众(FOO @一@@ QAE_NXZ?):无效__thiscall B ::巴(无效)”(?巴@乙@@ QAEXXZ)

一切似乎是罚款。 我看到A.cpp的编译过程。 大厦或链接只有项目“MyProject的”很好。 但是,当试图生成整个解决方案,我发现了错误。

谢谢!

Answer 1:

事实证明,还有另外一个项目OtherProject包括类B ,并使用它的功能bar() 我没看过的错误不够好,并没有注意到,在另一个项目中出现链接错误。 所有我必须做的是包括A.cppOtherProject



Answer 2:

在Visual工作室大多数连锁问题忘记添加相关.cpp文件。

检查所有的执行文件添加到项目中。 然后清理和生成项目。



Answer 3:

无论是这种方法的实施A.cpp被注释掉:

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

A.cpp不包括在该项目的建设。 右键单击A.cpp在Solution Explorer中,选择属性,看它是否是从构建排除。 当你建立,你看到这一点:

1>Compiling...
1>A.cpp

我输入这个代码到我的Visual Studio和它工作得很好。



Answer 4:

另一种解决方案这一点,你可以合并的.h和.cpp文件。 这样你会得到解决这个。 就我而言,我不喜欢这样,而且运作良好



文章来源: error LNK2019: unresolved external symbol in a multiple projects solution