我正在制作一个 DLL 库的接口,所以我可以将它与 Java 一起使用。我需要我的本机函数来修改 jlong 参数的值。就像参数是通过引用传递的。我的 Java 方法必须具有与此处显示的本机函数 MPUSBWrite 完全相同的参数。
实际无效代码示例: MPUSBWrite 获取其第 4 个参数作为参考并修改其值。当我读取 pLength 传递的变量时,我总是得到 0。
爪哇:
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 变量的值?