我有一个包含2个项目的Visual C ++解决方案:矩形和 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;
}
每当我尝试从矩形项目创建rect对象时,它就会成功。
但是当我尝试从project3做同样的事情时,会产生链接器错误。
LNK2019:未解析的外部符号“public:__ thishisall 函数_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的构造函数代码。
问题是什么以及如何解决?
感谢。
答案 0 :(得分:2)
错误是正常的:您告诉编译器它可以找到.h文件,但是您没有告诉链接器可以找到.obj文件的位置。
它可能取决于确切的VS版本,但在Project / Properties中,您应该找到Linker / Input以及其他依赖项。如果您只需要另一个项目中的一个或两个目标文件(<?Php
$degrees = -90; //change this to be whatever degree of rotation you want
header('Content-type: image/jpeg');
$filename = 'uploads/101822973264163759893-1428320267361.jpeg'; //this is the original file
$source = imagecreatefromjpeg($filename) or notfound();
$rotate = imagerotate($source,$degrees,0);
imagejpeg($rotate,$filename); //save the new image
imagedestroy($source); //free up the memory
imagedestroy($rotate); //free up the memory
?>
),请在此处添加它们。这样,您就可以避免代码重复,这将是未来维护的噩梦......
如果您有许多常见文件,您应该考虑将它们放在一个辅助项目中,该项目将在同一个解决方案中构建一个(静态)库,然后在两个项目中链接该库(当然还可以访问头文件)使用该库的其他项目的图书馆项目。)
答案 1 :(得分:-2)
我已经开始写一个长而长的答案了。然后我意识到,尽管你的课程被命名为“#34; Person&#34;你应该添加的头文件名为&#34; rect.h&#34;。
此外,您的构造函数不能在头文件中声明值(编辑:不是,我错了)。在头文件中,尝试使用:
Person(int h, int w);
你宣布需要什么,而不是你已经拥有的东西。如果你想要那些特别是你写的构造函数应该是:
Person();
in .h
和
Person::Person()
{
m_h = 1;
m_w = 5;
}
in .cpp。
如果你需要更详细的使用include的描述,我已经写了很多部分,所以不要犹豫。