我是C编程语言的新手。我在java中创建了一个头文件,以便我可以从java调用C函数。我的问题是我不知道如何将值传递给方法这里是我的C代码。
_declspec(dllimport) HANDLE FAR PASCAL CPSC1900Connect(BYTE port, void *param);
JNIEXPORT jstring JNICALL Java_CPSE_CPSC1900Connect(JNIEnv * env, jclass hPrinter, jstring port, jstring param)
{
HANDLE hMapFile = NULL;
const char *str = (*env)->GetStringUTFChars(env, port, 0);
const char *str2 = (*env)->GetStringUTFChars(env, param, 0);
hMapFile = CPSC1900Connect((BYTE )str,&str2);
(*env)->ReleaseStringUTFChars(env, port, str);
(*env)->ReleaseStringUTFChars(env, param, str2);
return param;
}
我需要调用CPSC1900Connect(BYTE port, void *param)
函数并分别传递port和param。如何传递这些值。上述代码的任何更正都非常受欢迎。
答案 0 :(得分:0)
一种可能是调用另一个将返回所需指针值的C函数,然后根据需要将该返回值传递给其他函数。在一天结束时,指针(内存地址)只是数字,因此Java将能够存储它并在将来的JNI调用中使用它。