小编Ste*_*ehn的帖子

如何使用JNI将C结构传递给java?

从CI开始创建一个用Java加载的DLL.我从java调用一些C函数,并从C调用Java函数(不复杂的数据类型) - 这很好.

我很难将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);
}
Run Code Online (Sandbox Code Playgroud)

在Java中

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

public StructType mMyStruct;
public StructType getMyStruct() { …
Run Code Online (Sandbox Code Playgroud)

c java java-native-interface data-structures

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

data-structures ×1

java ×1

java-native-interface ×1