ネイティブとは、C++またはCで書かれたことを意味します
私はJavaをベースにしたプログラミング言語を作成しています。これには、VMとバイトコードコンパイラへの言語が含まれています。
ループ、変数、算術などの言語の機能を実装するfor
ことは、私にとって問題ではありません。ただし、Javaのようなネイティブ関数を実行することは可能です。
私の言語で書かれたプログラムがウィンドウを作成し、ハードウェアやOSとインターフェイスし、単純な数学以外のことをすべて実行できるようにするために、ネイティブ関数が必要です。
JNIについて聞いたことがありますが、それは間違いなく私が望んでいることのように思えますが、そのようなものを実装する方法がわかりません。
私のVMはC++で実装されているので#include
、コンパイル時にネイティブ関数のhppファイルを作成して、動的にロードすることができますdll
がso
、これは実際には良い解決策とは思えません。別のネイティブ関数を実行できるようにするたびにVMを再コンパイルする必要があるためです。
問題はこれに帰着します:C ++プログラム(VM)が動的に(より正確にはバイトコードで指示された実行時に)C ++関数を使用してライブラリをロードし、ヘッダーで事前に宣言せずにそれらの関数を実行するにはどうすればよいですか?ファイル?