From C I am creating a DLL which is loaded in Java. I call some C functions from java and also call Java functions from C (whith uncomplex data types) - this is working fine.
I struggle with the transfer of a C structure to Java.
Here is a small example descriping what I want to do. It is not complete and maybe not correct because my problem is that I am not sure how to do it.
My goal is to pass a structure from the type "StructType" from C to Java in order to use the values in the Java program.
In 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);
}
In 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);
}
Thanks in advance for your help.
Steffen
Check my post in this question: pass data between Java and C
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With