【发布时间】:2017-03-17 14:30:27
【问题描述】:
我有一个包含 2 个项目的 Visual C++ 解决方案:rectangle 和 project3。
在矩形项目中,我有 rect.cpp 和 rect.h。
rect.h
#ifndef rect_h
#define rect_h
class Rect
{
public:
Rect();
int m_h;
int m_w;
};
#endif //rect_h
rect.cpp
#include "rect.h"
Rect::Rect()
{
m_h = 1;
m_w = 5;
}
每当我尝试从矩形项目创建矩形对象时,它都会成功。
但是当我尝试从 project3 中执行相同操作时,它会产生链接器错误。
LNK2019:未解析的外部符号“公共:__thiscall 函数 _main 中引用的 Rect::Rect(void)" (??0Rect@@QAE@XZ) 1>C:\Users\mbaro\documents\visual studio 2017\Projects\Project2\Debug\Project3.exe:致命错误 LNK1120:1 未解决的外部问题
main.cpp(在项目 3 中)
#include "rect.h"
using namespace std;
int main()
{
Rect* a = new Rect();
return 0;
}
我有点感觉类定义拾取成功,但是链接器无法从rect.cpp链接构造函数代码。
问题是什么以及如何解决?
谢谢。
【问题讨论】:
-
您是否将 .h 和 .cpp 文件添加到第二个项目中?
-
我只在项目属性中添加了头文件文件-> 附加包含目录。每当我构建解决方案时,第一个构建成功,第二个产生链接器错误。
-
好的。您还需要添加源文件,以便编译器知道编译它并且链接器知道链接到它。
-
@NathanOliver,如何添加源文件以及添加到哪里?
-
如果您不想将项目 rectangle 的
.cpp文件添加到 project3 您可以构建 rectangle作为静态库并链接到它。然后你可以只引用 project3. 中的标题
标签: c++ class constructor solution