Мне нужно вызывать некоторые методы Java с использованием C / C ++, а затем мне нужно использовать DPI в UVM или системный verilog для вызова методов C.У меня нет доступа к файлам JAVA или классам JAVA.У меня есть файл .jar, в котором присутствует мой класс и какие методы мне нужны для доступа.Я использую путь к этому файлу .jar в
options.optionString = "-Djava.class.path= path of .jar file
Я не могу найти класс, используя
clsH = env->FindClass("com/act/testdev/pa5/PA5");
Но я не могу получить идентификатор метода.Я знаю только имя метода в 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 Я получил этот код в Интернете в качестве примера того, как вызывать методы Java из c / c ++.