[英]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.