如何使用SWIG从C ++使用SWIG生成C#接口(或至少是C#模拟基类)?
假设:
C ++:
class IWidget
{
public:
virtual void Flob() = 0;
};
class Widget : public IWidget
{
public:
void Flob() {};
};
我想输出C#:
public interface IWidget
{
void Flob();
}
public class Widget : IWidget
{...}
注意:解决方案不一定是一个接口,但我需要能够使用模拟框架(如Moq或Rhino.Mocks)来模拟C#Widget类的基础。我的尝试只产生了生成的C#而没有公共构造函数。
答案 0 :(得分:1)
您可以使用以下一个或多个来获取列出的输出:
csclassmodifiers
%ignore
,使用cscode添加必要的方法声明。csinterfaces typemap
csinterfaces_derived typemap
然而,这可能不是实现使您的类可模拟的目标的最简单方法。如果未使用interface
,请考虑扩展您的帖子以清楚地确定实现此目的所需的c#。
对不起,我无法提供实际的代码答案,希望上面的内容能帮助您。
答案 1 :(得分:-2)
从
开始“接口文件”然后“构建一个C#模块”就是那里的东西。下面提到了同一文档中的编译/链接。在Visual Studio中执行相同的操作。
$ swig -csharp example.i
$ gcc -c -fpic example.c example_wrap.c
$ gcc -shared example.o example_wrap.o -o libexample.so
$ cscc -o runme *.cs