Хотя я более или менее понимаю, что такое языковая привязка, я изо всех сил пытаюсь понять, как они работают. Может ли кто-нибудь объяснить, как сделать привязку Java для WinAPI, например?Как вы переводите язык?
ответ
Вы найдете гораздо лучшие результаты при поиске интерфейса внешней функции или FFI. FFI - это то, что позволяет вам называть функции, написанные на другом языке, то есть в иностранных. Различные языки и время автономной работы имеют совершенно разные FFI, и вам придется изучать каждый из них по отдельности. Изучение FFI также заставляет вас знать немного больше о внутренних языках вашего языка и его времени исполнения, чем обычно используется. Некоторые FFI заставляют вас писать код на целевом языке, например Haskell (где код FFI должен быть написан в Haskell), а другие заставляют вас писать код на исходном языке, например Python (где код FFI должен быть написан на C).
Некоторые языки не используют термин FFI (хотя было бы неплохо, если бы они это сделали). Для Java это называется Java Native Interface, или JNI.
Языки (обычно) определили синтаксис для вызова «родного» кода. Поэтому, если у вас есть библиотека, которая экспортирует метод foo()
, создание biding означает, что вы создадите в своем примере Java-класс с методом foo()
. Таким образом, вы можете вызывать MyBinding.foo()
из остальной части кода, не имеет значения, был ли он чистым Java-методом или скомпилированным C-кодом.
Снова для Java, вы, вероятно, захотите посмотреть документацию JNI. Другие языки имеют схожие механизмы. Есть такие инструменты, как SIP, которые возьмут кучу файлов заголовков C (++) и создадут для него привязки Python. Я думаю, что другие языки могли бы иметь похожие инструменты.
- 1. Как вы переводите имя вкладки Facebook?
- 2. Как вы переводите свое Android-приложение?
- 3. Как вы переводите это на цель C?
- 4. Как вы переводите изображение с Symfony и Twig
- 5. Как вы переводите элементы массива и присоединяетесь к ним?
- 6. как вы переводите эту команду ssh в файл ssh_config?
- 7. Как вы переводите макет веб-дизайна на реализацию HTML?
- 8. Как вы переводите строки в пустые двоичные файлы в python?
- 9. Как вы переводите это для цикла в математику
- 10. Как вы переводите вызов метода enumerateDraggingItemsWithOptions в Swift?
- 11. Как вы переводите с лямбда-терминами на сети взаимодействия?
- 12. Как вы переводите этот код с Обработка на C++?
- 13. Как вы переводите это английское заявление в реляционную алгебру?
- 14. Как вы переводите вызов приставки в автономный скрипт?
- 15. Как вы переводите контакты с iPhone на Android-телефон?
- 16. переводите целое к ключевым
- 17. Hexo: Как вы меняете язык?
- 18. Как вы определяете пользовательский язык (или язык) в Android-программировании?
- 19. Как бы вы писали простой язык программирования?
- 20. Как вы думаете, лучший язык для биоинформатики?
- 21. Как вы переводите с checkstyle.xml в формат/профиль стиля затмения кода и обратно?
- 22. Как вы переводите старые данные базы данных SQL в новый макет таблицы?
- 23. переводите идеи теории множеств в SQL
- 24. Почему вы любите свой любимый язык программирования?
- 25. Когда вы доказываете, что язык разрешим, что вы эффективно делаете?
- 26. Вы можете изменить язык уведомлений html?
- 27. Как восстановить фактический язык/язык
- 28. Установить язык устройства как язык?
- 29. Как вы пишете язык программирования и файлы заголовков в c
- 30. Как вы показываете, что язык находится в классе P?
спасибо. На самом деле я знал об JNI. Но я не знал, где я должен копать для получения дополнительной информации. – qeek