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 変数の値を変更する方法はありますか?