2016-07-27 13 views
5

Tôi đang cố gắng biên dịch một chương trình C++ rất cơ bản và có điều gì đó sai trái. Dù nó là gì, tôi chắc chắn nó rất rõ ràng. Tôi có ba tập tin rất ngắn.Biên dịch Basic C++ Class

main.cpp:

#include <iostream> 
#include "Player.h" 

using namespace std; 

int main() 
{ 
    Player rob; 
    cout << "Iran" << endl; 
    return 0; 
} 

Player.h

#ifndef PLAYER_H 
#define PLAYER_H 

class Player { 
public: 
    Player(); 
private: 
    int score; 
}; 

#endif 

Player.cpp

#include "Player.h" 

Player::Player(){ 
    score = 0; 
} 

Lệnh Tôi usin g để biên dịch là g++ main.cpp -o main Và lỗi tôi được cấp bởi trình biên dịch là:

/tmp/ccexA7vk.o: In function `main': 
main.cpp:(.text+0x10): undefined reference to `Player::Player()' 
collect2: error: ld returned 1 exit status 

Lưu ý: Tất cả những tập tin nằm trong cùng thư mục.

+4

Hãy thử biên dịch tệp 'player.cpp' cũng ... Trình biên dịch không thể tự động tìm thấy nội dung chức năng trong tệp không được biên dịch. – Xarn

+5

Có vẻ như bạn không biên soạn Player.cpp. Cho 'g ++ main.cpp Player.cpp -o main' một lần thử. – user4581301

+4

Có thể trùng lặp của [Lỗi tham chiếu không xác định/lỗi chưa được giải quyết bên ngoài là gì và cách khắc phục?] (Http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external- symbol-error-and-how-do-i-fix) –

Trả lời

7

Như đã đề cập trong các nhận xét, bạn không cho phép Player.cpp vào trình biên dịch. Bạn nên cung cấp tất cả các tệp cpp cho trình biên dịch.

g++ main.cpp Player.cpp -o main