Pregunta

Si bien el aprendizaje de C # y Delphi Prism para su uso con MonoTouch es gratificante, Busco una forma de reutilización de código escrito en Object Pascal ordinaria. Simplemente re-escribir todo lo que he hecho en Delphi mayores de 15 años es simplemente inaceptable.

Así que mi pregunta es doble:

  1. Si por el bien del argumento tengo una escrito en la biblioteca de objetos ordinarios Pascal, sin dependencias externas y compilado con el FreePascal ARM compilador para iPhone - podría utilizar la dylib resultante de MonoTouch?
  2. Si lo anterior es correcto, ¿cómo declarar y llamar a estas funciones externas de C # / Prisma? ¿Cómo puedo lidiar con el paso de los tipos de registro, etc en mono?

he dado cuenta de que otras aplicaciones para el iPhone se envían con sus propios archivos dylib (la biblioteca de juegos SDL es un ejemplo típico). No encuentro ninguna razón para que esto no debe de trabajo.

¿Fue útil?

Solución

No he trabajado con MonoTouch, pero Mono / .NET tienen una característica llamada P / Invoke (invocación de plataforma).

Básicamente se declara sus funciones / procedimientos como extern en el código administrado y añadir un atributo DLLImport.

A diferencia de sus funciones importaciones nombre DLLImport / procedimientos de archivos .so en Linux y archivos .dylib también.

http://www.mono-project.com/Interop_with_Native_Libraries

P / Invoke en Mono

Otros consejos

No sé nada de MonoTouch, y menos sobre Mac sobre los dispositivos de brazo, pero:

Si sus usos lib sobre todo el cdecl convención de llamada, y MonoTouch quizá podrían llamar cdecl (C) Funciones más de algún mecanismo de operación nativa (P / Invoke o JNI como la materia), que sería un principio de base que podría funcionar.

Lo mismo para las estructuras, con declarar {C} $ packrecords.

También podría tener que llamar a dos funciones (IIRC FPC_INITIIALIZE, y otro para finalizar) para inicializar / finalizar el FPC RTL antes de llamar funciones.

Cualquier cosa por encima del nivel C sin formato, como Delphi Objetos y tal probablemente no utilizable y debe ser envuelto. Tal vez objetivo Pascal objetos son reutilizables (al menos si MonoTouch entiende los Objective C), pero como la mayoría otras cosas específica de Apple, que no es mi fuerte.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top