我試圖編譯俄羅斯方塊程序我C++和SDL在OS X先寫到我試着這樣做:OS X上編譯SDL與makefile文件
`g++ -o tetris main.cpp `sdl-config --cflags --libs` -framework Cocoa`
,並得到這個:
Undefined symbols:
"Game::startGame()", referenced from:
_main in ccQMhbGx.o
"Game::Game()", referenced from:
_main in ccQMhbGx.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
下面是main.cpp的文件:
#include <iostream>
#include "Game.h"
int main(int argc, char* argv[]) {
Game *game = new Game();
game->startGame();
return 0;
}
Game.h
是遊戲類,所有其他類(Board.h,IO的。 h,Piece.h,Pieces.h),幷包含遊戲的主要邏輯。
我真的很希望能夠爲此編寫一個makefile或找到某種方式輕鬆地將其分發給朋友。
編輯:
這裏是萬一別人最終生成文件是有同樣的問題:
CC=g++
CFLAGS=-c -Wall
SDLFLAGS=`sdl-config --cflags --libs` -framework Cocoa
SOURCES=main.cpp Game.cpp IO.cpp Board.cpp Pieces.cpp Piece.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=tetris
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) $(SDLFLAGS) -o [email protected]
.cpp.o:
$(CC) $(CFLAGS) $< -o [email protected]
clean:
rm -rf *.o $(EXECUTABLE)
我知道這是一箇舊帖子...但是對於每個'new'都應該有一個'delete'。 – gldraphael 2016-04-04 18:38:41