2015-06-30 38 views
-4

我是新來的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)函數並分別通過端口和參數。我如何傳遞這些值。上述代碼的任何更正都非常感謝。

+0

你能否提供其他文件或其他文件的片段? – Colin

+0

也許''port'參數爲'jbyte'或'jint'可以幫助 –

+0

你想'param'是什麼?指向什麼? – immibis

回答

0

一種可能性是調用另一個C函數,該函數將返回所需的指針值,然後您可以根據需要將該返回值傳遞給其他函數。在一天結束時,指針(內存地址)只是數字,所以Java將能夠存儲它並在將來的JNI調用中使用它。