2009-05-31 21 views
10

Chociaż mniej lub bardziej rozumiem, czym jest wiązanie języka, staram się zrozumieć, jak działają. Czy ktoś mógłby wyjaśnić, na przykład, jak utworzyć powiązanie Java dla WinAPI?Jak utworzyć powiązanie językowe?

Odpowiedz

8

Znacznie lepsze wyniki uzyskasz, szukając funkcji obcego interfejsu lub FFI. Funkcja FFI umożliwia wywoływanie funkcji napisanych w innym języku, tj. Obcym. Różne języki i środowiska uruchomieniowe mają bardzo różne FFI i będziesz musiał uczyć się każdego z nich indywidualnie. Uczenie się FFI zmusza cię również do poznania wewnętrznych cech twojego języka i jego środowiska wykonawczego, do których jesteś normalnie przyzwyczajony. Niektóre FFI powodują, że piszesz kod w języku docelowym, np. Haskell (gdzie kod FFI musi być napisany w Haskell), a inne powodują, że piszesz kod w języku źródłowym, takim jak Python (gdzie kod FFI musi być napisany w C).

Niektóre języki nie używają terminu FFI (choć byłoby miło, gdyby tak było). W przypadku języka Java nazywa się to Java Native Interface, lub JNI.

+0

Dziękuję. W rzeczywistości wiedziałem o JNI. Ale nie wiedziałem, gdzie powinienem szukać więcej informacji. – qeek

1

Języki (zazwyczaj) mają zdefiniowaną składnię do wywoływania "natywnego" kodu. Więc jeśli masz bibliotekę, która eksportuje metodę foo(), wykonanie binding oznaczałoby, że utworzysz, na przykład, klasę Javy z metodą foo(). W ten sposób możesz wywołać MyBinding.foo() z reszty kodu, nie ma znaczenia, czy była to czysta metoda Java, czy skompilowany kod C.

Znowu dla Javy, prawdopodobnie chcesz przejrzeć dokumentację na temat JNI. Inne języki mają podobne mechanizmy. Istnieją narzędzia takie jak SIP, które zajmą kilka plików nagłówkowych C (++) i stworzą dla niego powiązania Python. Sądzę, że inne języki również mogą mieć podobne narzędzia.

Powiązane problemy