第一个 c++ 文件和 header LNK2019 错误
First c++ file and header LNK2019 error
这是我第一次拥有单独的文件,也是我第一次编写 header 文件,但是我总是遇到无法修复的相同错误。以下是文件:
//main.cpp
#include <iostream>
#include "Bike.h"
/*
class Bike{
public:
int tyreDiameter;
int getTyreDi(){
return tyreDiameter;
}
}; */
int main(){
Bike b;
b.tyreDiameter = 50;
std::cout << b.getTyreDi();
while (1){
continue;
}
return 0;
}
//Bike.cpp
class Bike{
public:
int tyreDiameter;
int getTyreDi(void){
return tyreDiameter;
}
};
//Bike.h
#ifndef BIKE_H
#define BIKE_H
class Bike{
public:
int tyreDiameter;
int getTyreDi(void);
};
#endif
现在,如果我只有一个文件并使用 main.cpp 中注释掉的 class,一切正常。但是,一旦我尝试将 Bike class 分离到另一个 cpp 文件中,我就会收到此错误:
Error 1 error LNK2019: unresolved external symbol "public: int
__thiscall Bike::getTyreDi(void)" (?getTyreDi@Bike@@QAEHXZ)
Error 2 error LNK1120: 1 unresolved externals
我使用的是 Microsoft Visual Studio 2013。
任何帮助将不胜感激
为什么要定义 class Bike
两次?在 cpp
和 h
中,正确的方法是这样的:
header
//Bike.h
#ifndef BIKE_H
#define BIKE_H
class Bike{
public:
int tyreDiameter;
int getTyreDi(void);
};
#endif
cpp
//Bike.cpp
#include "Bike.h"
int Bike::getTyreDi(void)
{
//implementation like return tyreDiameter;
}
这是我第一次拥有单独的文件,也是我第一次编写 header 文件,但是我总是遇到无法修复的相同错误。以下是文件:
//main.cpp
#include <iostream>
#include "Bike.h"
/*
class Bike{
public:
int tyreDiameter;
int getTyreDi(){
return tyreDiameter;
}
}; */
int main(){
Bike b;
b.tyreDiameter = 50;
std::cout << b.getTyreDi();
while (1){
continue;
}
return 0;
}
//Bike.cpp
class Bike{
public:
int tyreDiameter;
int getTyreDi(void){
return tyreDiameter;
}
};
//Bike.h
#ifndef BIKE_H
#define BIKE_H
class Bike{
public:
int tyreDiameter;
int getTyreDi(void);
};
#endif
现在,如果我只有一个文件并使用 main.cpp 中注释掉的 class,一切正常。但是,一旦我尝试将 Bike class 分离到另一个 cpp 文件中,我就会收到此错误:
Error 1 error LNK2019: unresolved external symbol "public: int __thiscall Bike::getTyreDi(void)" (?getTyreDi@Bike@@QAEHXZ) Error 2 error LNK1120: 1 unresolved externals
我使用的是 Microsoft Visual Studio 2013。 任何帮助将不胜感激
为什么要定义 class Bike
两次?在 cpp
和 h
中,正确的方法是这样的:
header
//Bike.h
#ifndef BIKE_H
#define BIKE_H
class Bike{
public:
int tyreDiameter;
int getTyreDi(void);
};
#endif
cpp
//Bike.cpp
#include "Bike.h"
int Bike::getTyreDi(void)
{
//implementation like return tyreDiameter;
}