解决C++编译出现的重定义问题:multiple definition of ’XXX‘错误

时间:2022-05-24 14:51:40
  1 //file_NO2:hello.cpp
2 #include<iostream>
3 #include"hello.h"
4 using namespace std;
5 hello::hello()
6 {
7 }
8
9 int hello::Display()
10 {
11 cout<<"Hello, World!\n"<<endl;
12 return 0;
13 }

  1 //file_NO1:hello.h
2 #ifndef HELLO_H
3 #define HELLO_H
4 class hello{
5 public:
6 hello();
7 int Display();
8 };

  1 //file_NO3:myfirst.cpp
2 #include <iostream>
3 #include"hello.cpp"
4 using namespace std;
5
6 int main()
7 {
8 hello theHello;
9 theHello.Display();
10 //cout<<"Hello"<<endl;
11 return 0;
12 }

编译出现如下错误

hello.o: In function `hello::hello()':
hello.cpp:(.text+0x0): multiple definition of `hello::hello()'
myfirst.o:myfirst.cpp:(.text+0x0): first defined here
hello.o: In function `hello::Display()':
hello.cpp:(.text+0x6): multiple definition of `hello::Display()'
myfirst.o:myfirst.cpp:(.text+0x6): first defined here
hello.o: In function `hello::hello()':
hello.cpp:(.text+0x0): multiple definition of `hello::hello()'
myfirst.o:myfirst.cpp:(.text+0x0): first defined here
collect2: ld 返回 1


解决办法: 把myfirst.cpp中的#incldue”hello.cpp"改为#include“hello.h"即可。 哈哈,菜鸟开始学C++,这个错误比较低级,希望以后不会再犯了。