Есть ли аналог libffi под freepascal?

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

Ответить
devels
постоялец
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Есть ли аналог libffi под freepascal?

Сообщение devels »

libffi is a foreign function interface library. It provides a C programming language interface for calling natively compiled functions given information about the target function at runtime instead of compile time.

Это библиотека позволяет вызывать нативные скомпилированные функции из dll/so и других либ в рантайм, т.е. в полном рантайме. Библиотека написана на си, довольно обширная.

Вот описание: http://en.wikipedia.org/wiki/Libffi

Для многих языков она портирована, а для pascal как-то очередь не дошла.
MageSlayer
постоялец
Сообщения: 216
Зарегистрирован: 07.09.2006 12:30:44

Сообщение MageSlayer »

FreePascal - компилятор. Не думаю, что ему нужна такая обертка.

Обычные C функции и так могут вызываться - описываете прототип функции на паскале, используете паскалевские типы где нужно и external 'lib.so';cdecl; в конце.

Вот и вся ffi.
devels
постоялец
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Сообщение devels »

Дело не в этом, в си/с++ можно также, но здесь полностью run-time вызов (не только название, но и кол-во параметров, их тип и метод вызова). Cи тоже компилятор и это не отговорка.

P.S. Как подключать статически и через получение адреса я знаю. Повторяю, вопрос совершенно другой.
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Сообщение stikriz »

devels писал(а):Для многих языков она портирована, а для pascal как-то очередь не дошла.

Есть такой зверь: RemObjects Pascal Script for Delphi. Вот там есть вызов DLL и COM. Не знаю, портирована ли она для FreePascal. Очевидно, что при портировании будут серьезные проблемы, но поискать и выкусить вызов DLL, наверное можно.
http://goodbyamerica.sourceforge.net/PS01_rus.html - описание по русски.
devels
постоялец
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Сообщение devels »

Да я про это знаю, но код очень запутан и связан с самим движком, может быть есть примеры полегче?
Ответить