【问题标题】:c++ visual studio 2008 issue with two projects in one solutionc++ Visual Studio 2008 问题,一个解决方案中有两个项目
【发布时间】:2011-01-23 22:54:52
【问题描述】:

我有一个使用 Visual Studio 2008 创建的名为“Solution”的解决方案,我在该解决方案中有两个项目,项目“A”和项目“B”。当我做下面这样的事情时,它会在底部显示致命错误。我已经在项目 A->properties->Additional include Directory as ../B

项目 B

B.h

#include <iostream>

using namespace std;
class B
{
public:
    B();
    ~B();
};

B.cpp

#include "B.h"

B::B()
{

}

B::~B()
{

}

项目 A

啊.h

#include <iostream>

using namespace std;
class A
{
public:
    A();
    ~A();
};

A.cpp

#include "A.h"
#include "B.h"
A::A()
{
    B b;
}

A::~A()
{

}

项目 A 中的 Main.cpp

#include "B.h"

int main()
{
    B b;
    system("pause");
}

当我运行它时说

错误 3 致命错误 LNK1120: 2 unresolved externals H:\Sol\Debug\A.exe

错误 2 错误 LNK2001: 无法解析的外部符号 "public: __thiscall B::B(void)" (??0B@@QAE@XZ) A.obj

错误 1 ​​错误 LNK2001: 无法解析的外部符号 "public: __thiscall B::~B(void)" (??1B@@QAE@XZ) A.obj

【问题讨论】:

    标签: c++ visual-studio-2008 project solution


    【解决方案1】:

    您似乎没有从项目 B 中导出类 B。所以项目 A 看到了类 B 的声明,但找不到它的实现。 B项目建什么?

    【讨论】:

    • 项目 B 是否链接?它会产生一个dll吗?它是否会生成项目 A 应该与之链接的 .lib?如果它产生的只是一些 .obj 文件,那么为什么 - 项目 B 的目的是什么?
    • 谢谢!我没有包含 obj 文件
    • 如果你是手动将obj文件添加到项目A的链接命令中,你甚至可能没有项目B(只需将源文件直接包含在项目A中)。或者,让项目 B 生成项目 A 链接的静态库。
    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多