Как сделать языковую привязку? - PullRequest
11 голосов
/ 01 июня 2009

Хотя я более или менее понимаю, что такое языковая привязка, я изо всех сил пытаюсь понять, как они работают. Может кто-нибудь объяснить, как вы делаете привязку Java для WinAPI, например?

Ответы [ 2 ]

9 голосов
/ 01 июня 2009

Вы найдете гораздо лучшие результаты, если будете искать Интерфейс внешней функции или FFI. FFI - это то, что позволяет вам вызывать функции, написанные на другом языке, то есть на иностранных языках. Разные языки и среды исполнения имеют совершенно разные FFI, и вам придется изучать каждый из них в отдельности. Изучение FFI также заставляет вас знать немного больше о внутренностях вашего языка и времени его исполнения, чем вы обычно привыкли. Некоторые FFI заставляют вас писать код на целевом языке, например Haskell (где код FFI должен быть написан на Haskell), а другие заставляют вас писать код на исходном языке, например Python (где код FFI должен быть написан на C).

Некоторые языки не используют термин FFI (хотя было бы хорошо, если бы они использовали). Для Java это называется Собственный интерфейс Java, или JNI.

1 голос
/ 01 июня 2009

Языки (обычно) имеют определенный синтаксис для вызова «родного» кода. Поэтому, если у вас есть библиотека, которая экспортирует метод foo(), создание привязки будет означать, что в вашем примере вы создадите класс Java с методом foo(). Таким образом, вы можете вызывать MyBinding.foo() из остальной части кода, без разницы, будет ли это чистый Java-метод или скомпилированный код C.

Опять же для Java, вы, вероятно, захотите посмотреть документацию JNI . Другие языки имеют похожие механизмы. Существуют такие инструменты, как SIP , которые принимают набор заголовочных файлов C (++) и создают для него привязки Python. Я думаю, что другие языки также могут иметь подобные инструменты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...