這是我爲了更好地理解此問題而製作的最小程序。嘗試將類別分隔爲.h,.cpp時發生錯誤
ADT.h
#ifndef ADT_H
#define ADT_H
class ADT {
public:
void print();
};
#endif
ADT.cpp
#include <iostream>
#include "ADT.h"
using namespace std;
void ADT::print()
{
cout << "This program works." << endl;
}
testADT.cpp
#include <iostream>
#include "ADT.h"
using namespace std;
int main(void)
{
ADT sa;
sa.print();
return 0;
}
我用VIM編譯它/ MinGW的編譯器我的學校給我提供像這樣:
g++ testADT.cpp
其中產生以下錯誤:
C:\Users\King\AppData\Local\Tempcc6eoWAP.o:testADT.cpp(.text+0x15 reference to 'ADT::print()'
collect2.exe error: ld returned 1 exit status
你能解釋一下這個錯誤信息,並說明我的代碼中的錯誤?
這是不是一個錯誤,那就是你輸入編譯它是什麼。你得到了什麼錯誤? –
已更新的錯誤消息 –
如果您嘗試構建目標文件('testADT.o'),那麼您應該使用'-c'標誌。如果您正在嘗試構建可執行文件,則必須鏈接到ADT.o文件中(或者將兩個源文件傳遞給編譯器)。 – Beta