[英]Trying to compile and receiving the following errors, undefined references to certain classes.
[英]Beginner working with objects and classes getting the following errors
這是我一直在關注的教程,我已經完成了所講的一切,但沒有用。 我有三個文件:main.cpp,burrito.h(類)和burrito.cpp。
這分別是三個文件。
main.cpp中
#include <iostream>
#include "Burrito.h"
using namespace std;
int main() {
Burrito bo;
return 0;
}
Burrito.h
#ifndef BURRITO_H
#define BURRITO_H
class Burrito {
public:
Burrito();
};
#endif // BURRITO_H
Burrito.cpp
#include <iostream>
#include "Burrito.h"
using namespace std;
Burrito::Burrito() {
cout << "Hello World" << endl;
}
構建並運行時,出現以下錯誤:
...undefined reference to `Burrito::Burrito()'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 6 seconds)
1 errors, 0 warnings
我正在使用CodeBlocks進行編譯。
我正在使用CodeBlocks
這就是問題。
如果您開始學習C ++,那么(不幸的是) 必須學習翻譯單元 。 像Code :: Blocks這樣的IDE會向您隱藏此詳細信息-並且在這種情況下是錯的(盡管這並不是Code :: Blocks的真正錯,但是如果沒有配置,它無法自動猜測在這種情況下該怎么做)。
首先,放下IDE,轉到命令行進行編譯。 分別編譯兩個翻譯單元,並將它們明確鏈接在一起。
g++ -o burrito.o burrito.cpp
g++ -o main.o main.cpp
g++ -o main main.o burrito.o
每本優秀的初學者C ++書籍都將解釋其工作原理。
當您將對象鏈接在一起以獲取最終的可執行文件時,您忘記了正確地鏈接burrito.cpp文件中的已編譯對象
如果使用Makefile進行構建,則最終輸出規則應類似於“ -o main main.o burrito.o”
使用代碼塊13.12我右鍵單擊Burritto.cpp文件,選擇“屬性”,然后選擇“構建”選項卡,並選中“編譯文件”和“鏈接文件”復選框,然后單擊“確定”,保存所有內容,然后運行,效果很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.