我有一个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
?