2009-05-31 2 views
10

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

ответ

8

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

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

+0

спасибо. На самом деле я знал об JNI. Но я не знал, где я должен копать для получения дополнительной информации. – qeek

1

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

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

Смежные вопросы