お世話になります。 JNAを使ってJAVAからC言語を呼び出したいと考えています。 今悩んでいるプログラムは以下のとおりです。 C言語プログラム ------------------------------------------------------------------------------ #include void hello (int *array){ printf("Hello World!\n"); array[0] = 10; int i; for(i = 0;i < 3; i++){ printf(array[i] + "\n"); } } ----------------------------------------------------------------------------- JAVAプログラム ----------------------------------------------------------------------------- import com.sun.jna.Library; import com.sun.jna.Native; interface HelloLib extends Library { // loadLibraryの第一引数はあとで作成するlib***.soの***と一致させる。 HelloLib INSTANCE = (HelloLib) Native.loadLibrary("hello", HelloLib.class); // Cの関数名と一致させる void hello(int *array); } public class HelloJNA { public static void main(String[] args){ int array[] = new int[3]; array[0] = 0; array[1] = 1; array[2] = 2; for(int i = 0; i < array.length; i++){ System.out.println(array[i]); } HelloLib hello = HelloLib.INSTANCE; hello.hello(array); } } ---------------------------------------------------------------------------- 上記は適当なプログラムで無駄な箇所もあります。 質問ですが、JAVAからCへ1次元配列をポインタで渡したいのですが、どのように記述すればいいのでしょうか?(上記は適当に書いてみたのですが、「エラー: がありません」とエラーが出てしまいます。) また、C言語で配列の値を変更した場合には、ポインタで渡しているのでJAVA 側の配列の値も変更されるという認識でよろしいでしょうか。 お手数ですが、ご回答お願い致します。
↧