使用SWIG从C ++生成C#接口

Pat*_*ckV 6 c# c++ swig interface mocking

如何使用SWIG使用SWIG从C ++生成C#接口(或至少一个C#可模拟的基类)?

鉴于:

C ++:

class IWidget
{
public:
     virtual void Flob() = 0;
};

class Widget : public IWidget
{
public:
     void Flob() {};
};
Run Code Online (Sandbox Code Playgroud)

我想输出C#:

public interface IWidget
{
     void Flob();
}

public class Widget : IWidget
{...}
Run Code Online (Sandbox Code Playgroud)

注意:解决方案不必一定是接口,但是我确实需要能够使用Moq或Rhino.Mocks等模拟框架来模拟C#Widget类的基础。我的尝试仅产生了没有公共构造函数的生成的C#。

sam*_*bha -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 
Run Code Online (Sandbox Code Playgroud)