При изучении С# и Delphi Prism для использования с monotouch полезно, я ищу способ повторного использования кода, написанного на обычном Object Pascal. Просто переписать все, что я делал в Delphi более 15 лет, просто неприемлемо.
Итак, мой вопрос двоякий:
Я заметил, что другие приложения для iPhone поставляются со своими файлами dylib (типичная примерная игровая библиотека SDL). Я не нахожу причин, почему это не должно работать.
Я не работал с monotouch, но у Mono/.NET есть функция P/Invoke (платформа invoke).
В основном вы объявляете свои функции/процедуры как extern в управляемом коде и добавляете атрибут DLLImport
.
В отличие от своего имени DLLImport
импортирует функции/процедуры из файлов .so
в файлы Linux и .dylib
.
Я ничего не знаю о monotouch и меньше о Mac, относящихся к устройствам Arm, но:
Если ваш lib использует в основном соглашение о вызове cdecl, и monotouch может, возможно, вызвать функции cdecl (C) над каким-то собственным механизмом работы (P/Invoke или JNI like stuff), это будет базовый принцип, который мог бы работать.
То же самое для структур, объявить с помощью {$ packrecords C}.
Вам также может потребоваться вызывать две функции (IIRC FPC_INITIIALIZE и еще один для завершения) для инициализации/завершения RTF FPC перед вызовом функций.
Все, что выше простого уровня C, например Объекты Delphi и, возможно, не пригодны для использования и должны быть обернуты. Возможно, объективные объекты Pascal могут использоваться повторно (по крайней мере, если monotouch понимает объективные C-элементы), но, как и большинство других конкретных Apple, это не моя сильная сторона.
dylib
, возможно, он привлекает больше читателей