2011-08-15 29 views
10

Tôi sẽ di chuyển trò chơi của mình từ glut sang sdl.Chỉ cần bao gồm tiêu đề SDL gây ra lỗi liên kết

Nó hoạt động hoàn hảo trong glut nhưng tôi muốn sử dụng một số tính năng sdl.

Vì vậy, tôi đi vào tính chất dự án của tôi, dưới sự chỉ tiêu tiêu đề tôi nhấp vào chương trình sẽ được biên soạn, xây dựng giai đoạn, liên kết nhị phân với các thư viện, thêm SDL.framework

Cùng chính xác như tôi đã làm cho OpenGL .framework và GLUT.framework

Tuy nhiên khi tôi thêm: #include <SDL/SDL.h> nó đi kèm với một mối liên kết lỗi khi tôi cố gắng xây dựng:

Undefined symbols for architecture x86_64: 
    "_main", referenced from: 
     __start in crt1.o 
    (maybe you meant: _SDL_main) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Googling chỉ đơn giản dẫn đến một vài kết quả công bằng, nhưng không có lời giải thích thật.

Trả lời

8

SDL sử dụng macro để đổi tên main(..) và phải cung cấp macro của riêng mình, thường được triển khai trong SDLmain.m. Nó sẽ được cung cấp cùng với SDL.framework.

Khi bạn tải xuống khung công tác từ đây http://www.libsdl.org/download-1.2.php Đọc ReadMeDevLite.txt trong thư mục devel-lite.

mô tả Một http://www.meandmark.com/sdlopenglpart2.html

+0

Tôi khá mới đối với việc phát triển dựa trên Mac, thậm chí không chắc chắn tệp .m là gì, bạn có thể giải thích cách tôi sắp xếp những thứ như vậy không? – Blam

+2

@Blam, tệp .m là một tệp mục tiêu-C. Phiên bản Mac của SDL được viết trong Objective-C. Thêm các tệp SDLMain.h và SDLMain.m vào dự án của bạn. Chúng chứa mã keo bạn cần để biên dịch các ứng dụng SDL trên Mac OS X. –

2

Tôi đã thấy rằng khi tôi nhận được lỗi:

ký Không xác định cho kiến ​​trúc x86_64:
"_main", tham chiếu từ:
entry ngầm/bắt đầu cho thực thi chính
(có thể bạn muốn nói là: _SDL_main)

Tôi đã quên đi tới Project -> Build Phase -> Compile Sources và thêm SDLMain.m vào danh sách. Điều này giải quyết vấn đề cho tôi ngay lập tức.

Các vấn đề liên quan