简体   繁体   English

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

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

on C side I have something like 在C端,我有类似

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

I want to get the value on java side using carrays.i SWIG module. 我想使用carrays.i SWIG模块获取Java端的值。 But SWIG generates for me somthing like fn(String s) . 但是SWIG为我生成了诸如fn(String s) How to prevent such conversion to have something like fn(char_p s) to use carrays functionality. 如何防止这种转换使类似fn(char_p s)东西使用carrays功能。

The docs say that carrays.i is for treating a C pointer as a Java array. 文档说carrays.i用于将C指针视为Java数组。 Also, signed char won't be mapped to String . 另外, signed char不会映射到String So, void fn(signed char *INOUT) gives you public final static native void fn(byte[] jarg1) 因此, void fn(signed char *INOUT)为您提供了public final static native void fn(byte[] jarg1)

You override your C declaration (probably in a C header file) within the module .i file: 您可以在模块.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