JNI仕様では、関数をextern "C"ブロックに配置する必要があります。しかし、Cリンケージは型記述子を含んでいません。したがって、Javaコードでネイティブメソッドを呼び出すとき、jvmは、リンケージ内のネイティブコードの引数番号/順序/型と戻り値の型とJavaネイティブ定義が互換性があるかどうかを確認できますか?jniは、jniを呼び出すときに引数と戻り値の型をチェックするにはどうすればよいですか?どのようにこの型チェックを実装するには?
また、このような型チェックを実装する方法を理解したいと思います。私はすでにdlopen()/dlsym()/dlclose()
をLinuxプラットフォーム上で使用できることを知っていますが、タイプ記述子を取得できないため、タイプチェックを進めることができません。タイプ記述子でダイナミックライブラリとシンボルをロードする他の方法はありますか?私はこのライブラリのロードを実装し、JustVMと呼ばれる、私たちが作った「輪」プロジェクトに型チェックをするつもりです
、ここでのレポの:
https://github.com/lfkdsk/JustVM
実行時に、パラメータの数/型/名前(および戻り値)は単純には分かっていないため、「チェック」することはできません。 –