我正在制作一个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