繁体   English   中英

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

[英]Disable conversion from char* to java.lang.String

在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功能。

文档说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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM