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

时间:2022-05-24 14:51:34
  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++,这个错误比较低级,希望以后不会再犯了。