java - 在 C/C++ 中使用布尔数组参数调用 JAVA 的布尔数组方法
问题描述
我需要使用 C/C++ 调用一些 Java 方法,然后我需要在 UVM 或系统 verilog 中使用 DPI 来调用 C 方法。我无权访问 JAVA 文件或 JAVA 类。我有一个 .jar 文件,其中我的类包含我需要访问的方法。我正在使用该 .jar 文件的路径
options.optionString = "-Djava.class.path= path of .jar file
我可以使用
clsH = env->FindClass("com/act/testdev/pa5/PA5");
但我无法获得方法 ID。我只知道 java 类中的方法名称,它是一个带有布尔参数的布尔方法
com.act.testdev.pa5.PA5.aes_encrypt(key_data, pt_data);
此方法用于其他语言,以下是该方法的代码:
boolean[] aes_encrypt(boolean key_data[], boolean pt_data[])
{
return com.act.testdev.pa5.PA5.aes_encrypt(key_data, pt_data);
}
这是我试图用来获取 methodID 的代码。
if (clsH != NULL)
{
//midMain = env->GetMethodID(clsH, "<init>", "(ZZ)V");
midMain = env->GetMethodID(clsH, "aes_encrypt", "(ZZ)V");
printf("\n FOUND able to find the requested class midMain ==%x ==%x\n",midMain,clsH);
}
else
{
printf("\nUnable to find the requested class\n");
}
if (midMain != NULL)
{
//jstring StringArg = env->NewStringUTF("\nTestCall:Called from the C Program\n");
printf("\nable to find the requested Method\n");
jbooleanArray BoolArg1 = env->NewBooleanArray(128);
jbooleanArray BoolArg2 = env->NewBooleanArray(128);
env->CallBooleanMethod(clsH,midMain,BoolArg1,BoolArg2);
//env->CallStaticVoidMethod(clsH, midMain, NULL); //Calling the main method.
//env->CallBooleanMethod(clsH, midMain, BoolArg); //Calling the main method.
}
请帮助我如何在 c/c++ 中访问此方法。一旦我能够调用它,我还需要以相同的方式调用更多方法,稍后再尝试。我对 JAVA 没有任何想法我在网上获得了这段代码作为如何从 c/c++ 调用 java 方法的示例。