2009-05-31 54 views
10

雖然我或多或少地理解語言綁定是什麼,但我正在努力理解它們是如何工作的。 任何人都可以解釋如何爲WinAPI做一個Java綁定,例如?如何製作語言綁定?

回答

8

如果您搜索外部函數接口或FFI,您會發現更好的結果。 FFI可以讓你調用用不同語言編寫的函數,即外部函數。不同的語言和運行時間具有截然不同的FFI,您將不得不單獨學習每個FFI。學習FFI也會迫使您更多地瞭解您的語言內部和運行時間,而不是您通常習慣的內容。一些FFI讓你使用目標語言編寫代碼,就像Haskell(其中FFI代碼必須在Haskell中編寫代碼)一樣,另外一些使你可以使用Python語言編寫代碼(其中FFI代碼必須用C語言編寫)。

某些語言不使用術語FFI(儘管如果他們這樣做會很好)。對於Java,它被稱爲Java Native Interface,或JNI。

+0

謝謝。實際上,我知道JNI。但我不知道應該在哪裏挖掘更多信息。 – qeek 2009-05-31 21:13:52

1

語言(通常)已定義用於調用「本機」代碼的語法。因此,如果您有導出方法foo()的庫,則進行出價意味着您將在您的示例中使用方法foo()創建Java類。這樣,您可以從代碼的其餘部分調用MyBinding.foo(),無論它是純Java方法還是編譯C代碼都沒有區別。

對於Java,您可能還想看看JNI文檔。其他語言有類似的機制。有像SIP這樣的工具,它將採用一堆C(++)頭文件,併爲其生成Python綁定。我猜其他語言也可能有類似的工具。