我的C#代码使用第三方库,用C ++编写并使用Swig将其包装在C#中(三个项目,MyCodeCS,ThirdCpp和ThirdCs )
因此,如果我在cpp中使用公共构造函数Acpp()
和Acpp(int)
的类Acpp,我最终会使用类Acs,正确定义的构造函数Acs()
和{{1 (到目前为止,这么好),它们都使用内部swig生成的构造函数:Acs(int)
。
(当然,cpp和cs类都命名为A,但为了清楚起见,我将使用cpp和cs后缀命名它们)
现在,我正在集成一个新的cpp模块(MyCodeCpp),它包含一个继承自Acpp的类Bcpp。到目前为止,非常好:Bcpp继承自Acpp,我可以使用其Acs(IntPtr cPtr,bool)
从我的C#代码中调用它而没有任何问题。
我的问题是为了让我的Bcs对象被识别为Acs,我需要定义这样的Bcs类。这是一个非常愚蠢的,因为我已经有了cptr:
IntPtr
事情是...... public class Bcs : Acs
{
public Bcs(IntPtr cptr): base(cptr,true){}
}
是内部的,这意味着如果我想这样做,我需要:
Acs(IntPtr,bool)
受内部保护而不是内部保护,因此可以通过基于MyCodeCS的Bcs类调用问题是:我不知道如何做到这一点,即使有可能?
非常感谢
答案 0 :(得分:1)
解决了它。 只需要把
SWIG_CSBODY_PROXY(public, public, SWIGTYPE)
SWIG_CSBODY_TYPEWRAPPER(public, public, public, SWIGTYPE)
在我的.i文件中