【发布时间】:2011-01-11 10:15:26
【问题描述】:
我正在从 C 创建一个用 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);
}
在 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);
}
提前感谢您的帮助。
史蒂芬
【问题讨论】:
标签: java c data-structures java-native-interface