解決C++編譯出現的重定義問題:multiple definition of ’XXX‘錯誤
阿新 • • 發佈:2019-02-09
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 }
編譯出現如下錯誤
解決辦法: 把myfirst.cpp中的#incldue”hello.cpp"改為#include“hello.h"即可。 哈哈,菜鳥開始學C++,這個錯誤比較低階,希望以後不會再犯了。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