Ver Mensaje Individual
  #1  
Antiguo 09-09-2013
Avatar de kotai
kotai kotai is offline
Miembro
 
Registrado: mar 2004
Ubicación: Gandia
Posts: 31
Reputación: 0
kotai Va por buen camino
Cargar librerías (SDL2) desde iOS

Hola a todos.

Estoy creando las headers del nuevo SDL2 para DelphiXE4 ya que el proyecto SDL-Jedi parece que ha muerto.
Ya lo tengo prácticamente todo acabado y de momento es compatible con Win32, Win64 y OSX pero quiero añadir iOS ya que SDL2 también tiene soporte para él.

He visto ejemplos de como llamar a una función de una librería externa en FPC para iOS y es igual que como se hace el Delphi para Windows (excepto el LoadLibrary)

En Windows la forma de acceder a las funciones es:

Código:
function nombre_funcion(parámetros): Resultado cdecl; external nombre_librería;
Para OSX hay que hacer un pequeño cambio ya que los nombres de las funciones han de empezar por "_"

Código:
function nombre_funcion(parámetros): Resultado cdecl; external nombre_librería {$IFDEF MACOS}  name '_nombre_funcion' {$ENDIF};
Y en iOS el nombre de la función es como en Windows (sin añadir "_" delante) así que añado una condición más:

Código:
function nombre_funcion(parámetros): Resultado cdecl; external nombre_librería {$IFDEF MACOS}  {$IFNDEF IOS} name '_nombre_funcion' {$ENDIF} {$ENDIF};
Esto debería funcionar bien, pero no es así. Al compilar la aplicación para la plataforma iOS Simulator en el MAC se abre el Simulador de iOS , se lanza la aplicación pero antes de acabar de cargar el Delphi XE4 da el error: "Unable to create process" y el iOS Simulator cierra la aplicación y vuelve al menú principal:



Se que en iOS hay problemas con la carga de librerías estáticas y dinámicas. En el blog del coreano Naver ( http://blog.naver.com/simonsayz/120190766284 ) hay una forma de cargar librerías dinámicas y estáticas desde iOS con Delphi XE4, pero todo está explicado en coreano y no entiendo nada. También tiene un video en youtube: http://www.youtube.com/watch?v=dX1DNQ11td8

Yo he compilado con XCode las librerías del SDL2 para iOS : libSDL2.a y libSDL2Simulator.a y las pongo en la carpeta de la app para iOS pero no hace nada.

He subido un ejemplo muy simple con una sola llamada a las librerías SDL2 (SDL_Init) para todas las plataformas: Win32, Win64, OSX, iOS Simulator and iOS Device
En el RAR están incluidas todas las librerías de cada plataforma para poder probar directamente :

http://www.remakesonline.com/descargas/iOS_SDLTest.rar

También os dejo los headers de SDL2, SDL2_Net, SDL2_Image, SDL2_Ttf y SDL2_Mixer para DelphiXE4 compatible con win32, win64 and OSX:

http://www.remakesonline.com/descargas/SDL2.rar

¿ Alguien me puede ayudar a añadir la plataforma iOS a la librería SDL2 ?

Gracias.
Responder Con Cita