私は多かれ少なかれ言語バインディングが何であるかを理解していますが、私はそれらの仕組みを理解するのに苦労しています。 誰かがWinAPIのJavaバインディングをどうやって作るのか説明できますか?どのように言語バインディングを作成しますか?
答えて
Foreign Function InterfaceまたはFFIを検索すると、より良い結果が得られます。 FFIは、異なる言語、つまり外国語で書かれた関数を呼び出すことができるものです。異なる言語とランタイムには、大幅に異なるFFIがあり、個々に個別に学習する必要があります。 FFIを学ぶことによって、あなたの言語の内部とランタイムの内部について、あなたが普通に慣れ親しんでいたことを少しでも知ることができます。一部のFFIでは、Haskell(FFIコードはHaskellで書かれていなければなりません)のようなターゲット言語でコードを書かせたり、Python(FFIコードはCで書かれていなければならない)のようなソース言語でコードを書かせる人もいます。
特定の言語ではFFIという用語を使用していません(ただし、そうした方が良いでしょう)。 Javaの場合、Java Native Interface,またはJNIと呼ばれます。
言語(通常)は "ネイティブ"コードを呼び出すための構文を定義しています。したがって、メソッドfoo()
をエクスポートするライブラリを持っている場合、バインディングを作成すると、たとえば、メソッドfoo()
を使用してJavaクラスを作成することになります。そうすれば、残りのコードからMyBinding.foo()
を呼び出すことができます。純粋なJavaメソッドであっても、コンパイル済みのCコードであれ、違いはありません。
Javaの場合も、JNIのドキュメントを参照してください。他の言語にも同様のメカニズムがあります。 SIPのようなツールがあり、C(++)ヘッダファイルの束をとり、Pythonバインディングを生成します。私は他の言語も同様のツールを持つことができると思います。
- 1. iOSデバイスにどのように言語をインストールしますか?
- 2. Railsでどのように言語を設定しますか?
- 3. はどのようにC言語でビットマップを作成し、gccの
- 4. ビジュアルプログラミング言語はどのように機能しますか?
- 5. アセンブリ言語の問題...新しい行をどのように作成しますか?
- 6. 人々はどのようにして独自のプログラミング言語を作成しますか?
- 7. `asm()`関数はどのようにC言語で動作しますか?
- 8. どのようにしてカーブ形状(C)のUISliderを目的のC言語で作成できますか
- 9. Googleはどのように私の多言語ウェブサイトのインデックスを作成しますか?
- 10. ヘブライ語のウェブサイトのようなボタンは、言語の代わりにギベリッシュ語を作成します。
- 11. 式(φ*)*はどのような言語を表しますか?
- 12. DのMySQL言語バインディング?
- 13. CMU Sphinxの大語彙言語モデルを作成するにはどうすればよいですか?
- 14. 管理タスクのスクリプト作成にはどのようなビジュアルプログラミング言語が適していますか?
- 15. 多言語ウェブサイト、言語操作で動作しますか?
- 16. マークダウンのようなマークアップ言語を作成する
- 17. ゲームエンジンのAPIまたはスクリプト言語を作成しますか?
- 18. どのようにすべての言語の英数字正規表現を作成できますか?
- 19. C言語のFortran 2003バインディング:enumsと#definesをどのように翻訳するのですか?
- 20. C言語:どのように機能
- 21. どのようにC言語
- 22. MacOSでRPM/RPM5のPython言語バインディングを使用するにはどうすればよいですか?
- 23. アセンブリ言語のテキストをどのように下に移動しますか?
- 24. Eclipseの言語拡張機能を作成しますか?
- 25. ウェブページの言語の長さをどのように扱うか?
- 26. lvalueという用語はどのような言語を作りましたか?
- 27. アプリの言語をリアルタイムでどのように変更しますか?
- 28. 多言語アンドロイドアプリケーションを作成
- 29. スクリプト言語の作成?
- 30. SwiftのiPhoneで言語設定のようなUISearchController関数を作成しようとしています
ありがとうございます。私は実際にJNIを知っていました。しかし、私はどこでもっと情報を掘り出すべきかわからなかった。 – qeek