返回char *作为指针而不是struct中的字符串

时间:2015-01-27 19:43:37

标签: c# c swig

我有一个C结构和一个定义如下的方法:

struct foobar {
    HGLOBAL  hmem;
    char    *pmem;
};

void quux(unsigned char *pmem);

为此结构生成包装器时,SWIG会自动将pmem的返回类型设置为string

public class foobar : global::System.IDisposable 
{
    ...

    public string pmem {
      set {
        MYLIB_SWIGPINVOKE.foobar_pmem_set(swigCPtr, value);
      } 
      get {
        string ret = MYLIB_SWIGPINVOKE.foobar_pmem_get(swigCPtr);
        return ret;
      } 
    }
}    

但是将方法的参数设置为SWIGTYPE_p_unsigned_char类型:

public static void quux(SWIGTYPE_p_unsigned_char pmem) 
{
    MYLIB_SWIGPINVOKE.quux(SWIGTYPE_p_unsigned_char.getCPtr(pmem));
}

我需要这些参数属于同一类型,因为pmem应该是二进制的,我希望它们都是SWIGTYPE_p_unsigned_char。文档提到这是可能的,但不举一个如何改变这种行为的例子。所有数据存储都在C端进行管理,C#侧只是给出了指向该方法的正确指针。

如何将pmem的包装类型更改为SWIGTYPE_p_unsigned_char

0 个答案:

没有答案