我目前正在编写一个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

08-28 20:36