Как перенести структуру C в java с помощью JNI?

Из C Я создаю DLL, которая загружается на Java. Я вызываю некоторые функции C из java, а также вызываю функции Java из C (с несложными типами данных) - это работает нормально.

Я борюсь с переносом структуры C в Java.

Вот небольшой пример описания Что я хочу сделать. Это неполно и, возможно, неверно, потому что моя проблема в том, что я не знаю, как это сделать.

Моя цель - передать структуру типа "StructType" из C в Java, чтобы использовать значения в Программа Java.

На C

typedef struct {
  unsigned char value1;
  unsigned char value2;
} StructType;

void passStructToJava(StructType* myStruct)
{
  class cls;
  jmethodID mid;

  /* GlobalEnv, GlobalObj are globlal values which are already set */
  cls = (*GlobalEnv)->GetObjectClass(GlobalEnv, GlobalObj); 
  mid = (*GlobalEnv)->GetMethodID(GlobalEnv, cls, "receiveStructFromC", "(LPackage/StructType;)V");

  (*GlobalEnv)->CallVoidMethod(GlobalEnv, GlobalObj, mid, myStruct);
}

На Java

 public class StructType {
 public int value1; /* int because there is no uint8 type */
 public int value2;
}

public StructType mMyStruct;
public StructType getMyStruct() {
  return mMyStruct;
}
public void setMyStruct(StructType myStruct) {
  mMyStruct = myStruct;
}


public void receiveStructFromC(StructType myStruct)
{
  setMyStruct(myStruct);
}

Заранее благодарим за помощь.
Steffen

6
задан Steffen Kuehn 11 January 2011 в 10:15
поделиться