2017-08-22 5 views
0

JNIコードを作成するときは、CまたはC++で作成したDLLをロードしてネイティブ関数を使用するには、System.load()またはSystem.loadLibrary()メソッドを使用する必要があります。java.lang.Objectクラスはどのようにネイティブ関数をロードしますか?

しかし、どのようにjava.lang.Objectまたはjava.lang.SystemのようなクラスがhashCode()またはclone()またはsetOut0(PrintStream out)のような、独自のネイティブ関数をロードしない、とどこそのライブラリが存在するのでしょうか?

答えて

0

JVMは、Objectの代わりに、JNI関数RegisterNatives()を使用してそれを行います。

+0

はい、私はまだJVMがその機能をどのように見つけているのか分かりません。 ObjectはregisterNatives()ネイティブメソッドを呼び出しますが、その関数は何らかの形でObjectにリンクされていなければなりません。ライブラリへのパスを指定せずにどうしたら実現できますか? –

+0

ライブラリは必要ありません。 APIを参照してください。関数のアドレスを直接指定します。この関数はすでにJVMにリンクされています。 – EJP

+0

それは私が不思議に思っていたことです、私は今理解しています、返信いただきありがとうございます。 –

関連する問題