如何让SWIG了解我的C ++ float *类变量?

时间:2011-01-24 22:42:51

标签: c# c++ swig

我正在尝试使用SWIG为C ++代码创建一个C#包装器,类似于以下内容:

class blah {
  ...
public:
  float *getVarA() { return a; }
private
  float *a;
  ...
}

在我的界面文件中,我使用以下%apply:

%apply float OUTPUT[] { float *getVarA() }

这会导致C#包装器返回float [],但包装器函数不知道float * a是什么。这会导致过多的错误:

Cannot implicitly convert type 'float[]' to 'System.IntPtr' 

创建了包装函数:

public float[] getVarA() {
  IntPtr cPtr = SpectrumPINVOKE.blah_getVarA(swigCPtr);
  SWIGTYPE_p_float ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_float(cPtr, false);
  return ret;
}

使用非指针类型时,例如:

class blah {
  ...
public:
  int getVarB() { return b; }
private:
  int b;
  ...
}

我得到了一个很好的正确

public int getVarB() {
  int ret = SpectrumPINVOKE.blah_getVarB(swigCPtr);
  return ret;
}

我阅读的2.0文档比我想要的更多,但是我在某个地方遗漏了一些东西而且我现在找不到它。感谢。

0 个答案:

没有答案