我目前正在编写一个Java应用程序,加载一个用C编写的本机库。
从Java调用的C函数被传递给jchar。
在该C函数中,另一个库加载了一个新函数,该函数需要将jchar转换为char*指针。
关于这个新函数,我只知道它将指向char值的指针作为参数(char*parity)。
这是我当前的代码:
JNIEXPORT jint JNICALL Java_analyzer_DeclareNative_init (JNIEnv *env, jobject obj, ... , jchar parity, ...) {
typedef int (__stdcall *Init) (..., char* parity, ...);
HINSTANCE hinstLib = LoadLibrary("rs232");
Init initcon = (Init) GetProcAdress(hinstLib, "functionname");
char p = (char) parity; //(Typecasting jchar to char)
char *pchar = &p; //(Creating a pointer to p)
initcon(..., *pchar, ...);
}
当我试图编译此代码时,它会抛出以下错误:
“从char到char的转换无效*”
最佳答案
正如@bmargulies已经指出的,这里的问题是您没有通过pchar
(它是(char *)
类型,但是*pchar
)。*
是解引用运算符,它的意思是“在pchar
指向的地址上给我任何东西”。换句话说-一个char
。