Ich bin derzeit Codierung einer Java-Anwendung, die eine native Bibliothek in C codiert. Eine C-Funktion, die aus Java aufgerufen wird, ist ein Jchar übergeben. In dieser C-Funktion wird eine andere Bibliothek mit einer neuen Funktion geladen, die den jchar in einen char * -Zeiger konvertiert. Alles, was ich über diese neue Funktion weiß, ist, dass sie einen Zeiger auf einen char-Wert als Parameter (char * parity) nimmt.C Pointer - Ungültige Konvertierung von Char zu Char *
Das ist mein aktueller Code ist:
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, ...);
}
Wenn ich versuche, diesen Code zu kompilieren, führt es folgende Fehlermeldung: „Ungültige Umwandlung von char zu char *“
Warum übergeben Sie '* pchar' und nicht 'pchar'? – bmargulies
Veröffentlichen Sie in sich abgeschlossenen Code und insbesondere Java-Deklaration der nativen Methode und ihre JNI-Implementierung. – Sergio
Bytheway - Ich sehe keinen 'Jchar' im Code. Woher kommt es? – Sergio