2011-08-15 14 views
10

Iba a migrar mi juego de glut a sdl.Simplemente incluir el encabezado SDL provoca el error del enlazador

Está funcionando perfectamente en exceso, pero quería utilizar algunas características de SDL.

Así que entro en mis propiedades del proyecto, bajo el encabezado objetivos hago clic en el programa que se va a compilar, construir fases, enlazar binario con bibliotecas, añadir SDL.framework

exactamente el mismo que yo he hecho con OpenGL .framework y GLUT.framework

sin embargo, cuando se suman: #include <SDL/SDL.h> que se le ocurre un error de vinculador cuando intento de construir:

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) 

buscar en Google, simplemente conduce a una feria pocos resultados, pero no hay explicaciones reales.

Respuesta

8

SDL utiliza una macro para cambiar el nombre de su main(..) y debe suministrar la suya propia, generalmente implementada en SDLmain.m. Se debe suministrar junto con el marco SDL.

Al descargar el marco de aquí http://www.libsdl.org/download-1.2.php Lea ReadMeDevLite.txt en la carpeta devel-lite.

Otra descripción http://www.meandmark.com/sdlopenglpart2.html

+0

Soy bastante nuevo en el desarrollo basado en Mac, ni siquiera estoy seguro de qué es un archivo .m, ¿podría explicarme cómo haría para resolver esas cosas? – Blam

+2

@Blam, un archivo .m es un archivo Objective-C. La versión para Mac de SDL está escrita en Objective-C. Agregue los archivos SDLMain.hy SDLMain.m a su proyecto. Contienen el código de pegamento que necesita para compilar aplicaciones SDL en Mac OS X. –

2

he encontrado que cuando me sale el error:

símbolos no definidos para la arquitectura x86_64:
"_main", se hace referencia a partir de:
entrada implícita/start para ejecutable principal
(quizás se refirió a: _SDL_main)

He olvidado ir al Proyecto -> Fases de compilación -> Compilar fuentes y agregue SDLMain.m a la lista. Esto me solucionó el problema de inmediato.

Cuestiones relacionadas