23:16最近話題のGraalVMのnative-imageで、共有ライブラリを作れるようなので遊んでみた。NativeImpl.javaJavaコードを書く今回書いたのはこんな感じ。文字列をやりとりするような物にしている。アノテーションを付与することで共有ライブラリに出力することができ、実際に呼び出すときの名前を指定することができる。付与されたメソッドは以下の制約がある。これを満たさないと、共有ライブラリ化のタイミングでエラーが発生する。含まれているが、GraalVM同梱のjavacでコンパイルする場合はクラスパスに指定する必要はない。IDEで赤線を引かれないためには色々設定が必要かもしれないが今回は割愛。共有ライブラリを生成いよいよ共有ライブラリを生成する。要求されるので適当につけておく。共有ライブラリと、それを利用するためのヘッダファイル群が生成される。アノテーションで指定した名前で関数が生成されている。Java_org_pkg_apinative_Native_hello(graal_isolatethread_t*);生成したライブラリを実際に呼び出すライブラリなので、単体では動かせない。実際にCから呼び出してみる。-Wl,-rpath='$ORIGIN/'コンパイルに成功すれば、実行ファイルが生成されるはず。POSTS2023年振り返りCategorieslifePosts道化的プログラミング。