5.3. 関数のマッピング

JNI と JNA を対比する場合最も顕著な違いは、関数のマッピングの方法です。

まずシンプルな例を考えて見ましょう。

C/C++で「hello」という関数があったとします。

JNA では Library クラスを継承したインターフェースに hello というメソッドを宣言します。

public interface CLibrary extends Library {
    void hello();
}

もちろん「hello」という関数は、呼び出す側のC言語のソースコードで宣言しているものとします。

例えば C 言語のコードは以下のようにすることができます。

#include <stdio.h>

void hello() {
    printf("Hello World!\n");
}

これで関数のマッピングは終わりです。C言語ソースコードをコンパイルビルドして、共有ライブラリを生成して、Javaクラスから呼び出すことができます。

Copyright 2018-2019, by Masaki Komatsu