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 как-то очередь не дошла.
Есть ли аналог libffi под freepascal?
Модератор: Модераторы
-
MageSlayer
- постоялец
- Сообщения: 216
- Зарегистрирован: 07.09.2006 12:30:44
FreePascal - компилятор. Не думаю, что ему нужна такая обертка.
Обычные C функции и так могут вызываться - описываете прототип функции на паскале, используете паскалевские типы где нужно и external 'lib.so';cdecl; в конце.
Вот и вся ffi.
Обычные C функции и так могут вызываться - описываете прототип функции на паскале, используете паскалевские типы где нужно и external 'lib.so';cdecl; в конце.
Вот и вся ffi.
Дело не в этом, в си/с++ можно также, но здесь полностью run-time вызов (не только название, но и кол-во параметров, их тип и метод вызова). Cи тоже компилятор и это не отговорка.
P.S. Как подключать статически и через получение адреса я знаю. Повторяю, вопрос совершенно другой.
P.S. Как подключать статически и через получение адреса я знаю. Повторяю, вопрос совершенно другой.
devels писал(а):Для многих языков она портирована, а для pascal как-то очередь не дошла.
Есть такой зверь: RemObjects Pascal Script for Delphi. Вот там есть вызов DLL и COM. Не знаю, портирована ли она для FreePascal. Очевидно, что при портировании будут серьезные проблемы, но поискать и выкусить вызов DLL, наверное можно.
http://goodbyamerica.sourceforge.net/PS01_rus.html - описание по русски.
Да я про это знаю, но код очень запутан и связан с самим движком, может быть есть примеры полегче?
