PDA

Ver la Versión Completa : Cargar librerías (SDL2) desde iOS


kotai
09-09-2013, 20:58:05
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:


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 "_"


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:


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:

http://www.remakesonline.com/images/foros/sdlioserror.png

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.