禁用从char *到java.lang.String的转换

时间:2014-10-01 13:24:00

标签: java c java-native-interface swig

在C方面我有类似

的东西
void fn(char *s) {
  if(s != NULL) {
    sprintf(s, "some string");
  }
}

我希望使用carrays.i SWIG模块获取java端的值。但SWIG为我创造了像fn(String s)这样的东西。如何防止此类转换使用fn(char_p s)来使用carrays功能。

1 个答案:

答案 0 :(得分:0)

文档说carrays.i用于将C指针视为Java数组。此外,signed char不会映射到String。因此,void fn(signed char *INOUT)会为您提供public final static native void fn(byte[] jarg1)

您在模块.i文件中覆盖C声明(可能在C头文件中):

%module test
%include "typemaps.i"
%include "carrays.i"

%{
extern void fn(char *);
%}
extern void fn(signed char *INOUT);