Swig:将Java中的字节数组传递给C语言

 2023-01-20    309  

问题描述

我正在尝试创建用于使用swig的字节[]的Java实现.

swig:

Swig:将Java中的字节数组传递给C语言

%include "typemaps.i"
%apply(char *STRING, int LENGTH) { (char *buff, int len) }; 
%inline {
   typedef struct {
        char*         buff;        
        int           len;  
  } workit_t;
}

在我生成的Java类(workit_t.java)中,参数buff是字符串,而不是字节[].

java:

public void setBuff(String value){
 ... 
}

我在SWIG定义中做错了什么?

当我编写一个没有结构的简单SWIG定义时,我会得到所需的参数类型.

swig:

%include "typemaps.i"
%apply(char *STRING, int LENGTH) { (char *buff1, int *len1) };

java:

public static void Mathit(byte[] buff1, byte[] buff2) {
...
}

推荐答案

好吧,我已经能够做对了.

之前:

%include "typemaps.i"
%apply(char *STRING, int LENGTH) { (char *buff, int len) }; 
%inline {
   typedef struct {
        char*         buff;        
        int           len;  
  } workit_t;
}

现在:

%include various.i                    
%apply char *BYTE { char *buff };  //map a Java byte[] array to a C char array
%inline {
   typedef struct {
        char*         buff;        
        int           len;  
   } workit_t;
}

或:

%include various.i                    
%apply char *NIOBUFFER { char *buff }; //map Java nio buffers to C char array
%inline {
   typedef struct {
        char*         buff;        
        int           len;  
   } workit_t;
}

以上所述是小编给大家介绍的Swig:将Java中的字节数组传递给C语言,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26088.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。