小编Gar*_*ani的帖子

如何将数据从字符缓冲区复制到 jbyteArray 并将其从 C 返回到 java 本地接口(JNI)中的 java?

我有 unsigned char 缓冲区,其中有数据,我需要将它复制到 jbyteArray 以便我可以以字节数组格式返回它。这是我的一段代码 C 代码:

JNIEXPORT jbyteArray JNICALL Java_hello1_recieve(JNIEnv *env, jobject object) 
{


      ssize_t bytes_read;
    /* receive the message */
    bytes_read = mq_receive(mq,buff, MAX_SIZE, NULL);
    jbyteArray b[bytes_read];
    CHECK(bytes_read >= 0);
    buff[bytes_read] = '\0';

    int i=0;
    while(buff[i]!='\0')
    {
        b[i]=buff[i];
        printf("%c\n",b[i]);
        i++;
    }


     /* cleanup */

     CHECK((mqd_t)-1 != mq_close(mq));
     CHECK((mqd_t)-1 != mq_unlink(QUEUE_NAME));
     return b;
Run Code Online (Sandbox Code Playgroud)

}

这里 CHECK(x) 是:

do{ 
    if (!(x)) 
    {
        fprintf(stderr, "%s:%d: ", __func__, __LINE__);
        perror(#x);
        exit(-1);
    }
  } while (0)
Run Code Online (Sandbox Code Playgroud)

而java端的代码是:

public class hello1 {
public …
Run Code Online (Sandbox Code Playgroud)

java-native-interface

5
推荐指数
1
解决办法
1797
查看次数

标签 统计

java-native-interface ×1