我正在製作一個DLL庫的接口,所以我可以在Java中使用它。 我需要我的本地函數來修改jlong參數的值。像參數通過引用傳遞一樣。 我的Java方法必須具有與此處顯示的本機函數MPUSBWrite相同的確切參數。將指針從java傳遞給本機
實際不工作代碼示例: MPUSBWrite獲取其第四個參數作爲參考並修改它的值。 當我讀取pLength傳遞的變量時,我總是得到0。
的Java:
public static native boolean Write(long handle, byte[] pData, int dwLen, long pLength, int dwMilliseconds);
本地C++:
JNIEXPORT jboolean JNICALL Java_jPicUsb_iface_Write
(JNIEnv *env, jclass jc, jlong handle, jbyteArray pData, jint dwLen, jlong pLength, jint dwMilliseconds) {
jniByteArray b(env, pData);
DWORD res = MPUSBWrite((HANDLE)handle,b.getBytes(),dwLen,(PDWORD)pLength,dwMilliseconds);
if (res) {
return JNI_TRUE;
} else {
return JNI_FALSE;
}
}
有沒有辦法我的C++代碼參照修改pLength變量的值?
我真的需要知道關於jni。我想讓它返回參數而不是布爾值。 我並不想改變參數,因爲我想製作一個適配器以實現完全相同的功能。 謝謝! – Gero 2009-01-28 23:29:33