Java JNI 入門篇——傳遞數組與修改數組


這里不在重復Java JNI 的開發過程了,不熟悉的同學請參考:Java JNI HelloWorld 直接上主要代碼:
ArrayJNI.Java

package com.example.jni;

public class ArrayJNI { static { System.loadLibrary("arrayjni"); } public native byte[] process(byte[] data); public static void main(String[] args) throws Exception { byte[] srcbyte = new byte[] { 1, 2, 3 }; ArrayJNI item = new ArrayJNI(); byte[] resultbyte = item.process(srcbyte); System.out.print("(Java)result byte: "); for (int i = 0; i < resultbyte.length; i++) { System.out.printf("%d\t", 0xff & resultbyte[i]); } System.out.println(); } } 

arrayjni.cpp

// arrayjni.cpp : Defines the exported functions for the DLL application. // #include "stdafx.h" #include "com_example_jni_ArrayJNI.h" #include <iostream> /* * Class: com_example_jni_ArrayJNI * Method: process * Signature: ([BII)[B */ JNIEXPORT jbyteArray JNICALL Java_com_example_jni_ArrayJNI_process (JNIEnv * env, jobject obj, jbyteArray byteArray) { jbyte* receivedbyte = env->GetByteArrayElements(byteArray, 0); jsize size = env->GetArrayLength(byteArray); printf("(C++) received byte: "); for (int i = 0; i < size; i++) { int value = (int)(receivedbyte[i] & 0xff); printf("%d\t",value); jbyte v = (~value); env->SetByteArrayRegion(byteArray, i, 1, &v); } return byteArray; } 

這里寫圖片描述
ok!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM