用c写的程序,要生成dll供java调用,现学现用JNI。字符串的调用还比较简单,有现成的语句,传递结构体把俺累的半死,因为结构体里有一维和二维数组。看了不少博文,终于弄出来了,总结一下,希望有助他人。
c和c++的写法略有不同,以下为c++版本。
传递结构体如下:
struct mystruct
{
float array1[M];
float array2[M][N];
};
以下重点讲结构体:
1、传递参数 c++ ——> java
JNI函数:
JNIEXPORT jobject JNICALLJava_com_..._函数名(JNIEnv *env, jobject jobj, jstring jstr)
则,读取字符串语句为 char* chr = (char*)( env )->GetStringUTFChars(jstr, NULL);
传递结构体: