пятница, 3 мая 2013 г.

Враппер для DLL на Free Pascal

Дано: 
1. Имеется DLL, содержащая API для управления некой железкой;
2. Для этой DLL имеется враппер для .NET с описанием функций (процедур) библиотеки (их параметров и возвращаемых значений);
3. Имеется описание этой dll, созданное с помощью DependencyWalker, содержащее имена экспортируемых функций (процедур) и смещения точек входа.

Требуется:
Подключить эту DLL к программе на Free Pascal, используя имеющуюся информацию.

Читаю Интернет, но пока полной ясности в вопросе о том, как именно можно это сделать, нет.

3 комментария:

  1. Написал прототип враппера для API на FPC, в виде юнита. После того, как получу на руки железки, попробую все-таки отладить доступ к функциям на Паскале. Пока есть два тонких момента: соответствие типов Free Pascal типам Sys.Int32 и Sys.String из dotNET.

    Если Sys.Int32 это 4-байтное целое -2147483648:2147483647, то ему могут соответствовать и Integer −2147483648. 2147483647, и LongInt −2147483648.2147483647, оба 4-байтные.

    Что касается Sys.String, то по своей сути это коллекция символов. Понятно, что появляется на свет она только в дотнетовском враппере, являющемся надстройкой для оригинального API DLL. Поэтому, в первом приближении, можно считать, что это или тип String, или String[X]. Мне кажется более вероятным второй вариант, а это предполагает некоторые проблемы с угадыванием (подбором) длин строк в параметрах паскалевского враппера.

    ОтветитьУдалить
  2. С помощью PEiD пощупал имеющийся APIшный DLL (не дотнетовский враппер).
    Вот что оно мне выдало: Borland Delphi 5.0 KOL/MCK, не упакованный.
    Судя по всему, это многое упрощает, так как вызовы, скорее всего, окажутся полностью совместимы.

    ОтветитьУдалить
  3. Найдены нужные определения для Borland Pascal'я. Надеюсь, что проблем с API не будет.

    ОтветитьУдалить

Ваш комментарий откроется после проверки и подтверждения.
Благодарю за понимание необходимости проверки!