Существует ли инструмент, который создает заголовочные файлы C для DLL-файлов Delphi (Win32)? - PullRequest
3 голосов
/ 30 июля 2009

До сих пор я видел только инструменты и некоторую информацию для создания кода Delphi для заданного заголовочного файла C.

Однако в случае «Delphi first» есть объявление интерфейса Delphi и сгенерированная DLL, а заголовок C отсутствует. Существуют ли инструменты, которые могут извлечь необходимую информацию и создать заголовочный файл C для DLL?

Такой инструмент может быть полезным и сэкономить время в кросс-языковых / кроссплатформенных проектах. Например, с файлом заголовка C было бы проще автоматически создать код привязки Java JNA с помощью jnaerator . Цепочка инструментов будет выглядеть так:

Источник Delphi -> создать заголовок C -> преобразовать в привязку Java -> использовать Delphi DLL из Java

Ответы [ 2 ]

7 голосов
/ 07 августа 2009

Собственный компилятор Delphi может выводить заголовочные файлы C / C ++ из файлов .pas, используя параметр -JPHNE.

1 голос
/ 30 июля 2009

Хотя теоретически это работает, многие библиотеки DLL Delphi будут использовать соглашения о вызовах, такие как register, не упаковывать записи стандартными способами C и т. Д. Кроме того, существуют проблемы RTL, проблемы со словом состояния сопроцессора и т. Д.

Вероятно, большинство компиляторов C могут обойти эту проблему, добавив несколько прагм, но я сомневаюсь, что весь Java-связывающий материал сожрет это.

Так что, если DLL не создана с учетом этого, это, вероятно, будет работать чаще, чем это.

Хотя чтение и анализ заголовка Delphi не так сложен. Паскаль легче анализировать и преобразовывать, чем, например, C. FPC (Free Pascal) имеет пакет анализатора pascal, который используется для инструмента документирования, который может быть перенаправляемым

...