1

我使用过类型映射:

%include "typemaps.i"

%apply SWIGTYPE * {char *deci};

这是 SWIG 生成的代理类:

public class SWIGTYPE_p_char {
    private long swigCPtr;

    protected SWIGTYPE_p_char(long cPtr, boolean futureUse) {
        swigCPtr = cPtr;
    }

    protected SWIGTYPE_p_char() {
        swigCPtr = 0;
    }

    protected static long getCPtr(SWIGTYPE_p_char obj) {
        return (obj == null) ? 0 : obj.swigCPtr;
    }
}
4

1 回答 1

1

这似乎微不足道,但是您是否尝试过:

SWIGTYPE_p_char my_p_char;

毕竟,类所包含的只是指针地址的 long int 表示

显然,您只能将其用于返回 char* 或使用 char* 参数作为伪返回值的 ac 函数

如果您想使用 char* 输入参数,那么您很可能必须编写某种辅助函数

我最近用 SWIG 包装了这个函数原型:

int load_config(const char *fn, Config *cfg);

它将数据从由字符串 (char*) 指定的文件加载到我的 Config 数据结构中

我可以使用以下行从 Java 调用它:

example.load_config("test.cfg", cfg);

或者:

String cfg_file = "test.cfg";
example.load_config(cfg_file, cfg);
于 2012-08-09T10:34:33.570 回答