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

从C+生成C#接口+;使用SWIG 我如何使用SWIG从C++使用SWIG生成一个C接口(或者至少一个C模拟的基类)?p>,c#,c++,interface,mocking,swig,C#,C++,Interface,Mocking,Swig,鉴于: C++: 我想输出C#: 注意:解决方案不必是接口,但我需要能够使用Moq或Rhino.Mocks等模拟框架来模拟C#Widget类的基础。我的尝试只生成了没有公共构造函数的C# “接口文件”和“构建C#模块”是其中的重要内容。以下是同一文件中提到的编译/链接。在VisualStudio中执行同样的操作 $ swig -csharp example.i $ gcc -c -fpic example.c example_wrap.c $ gcc -shared example.o

鉴于:

C++:

我想输出C#:

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

“接口文件”和“构建C#模块”是其中的重要内容。以下是同一文件中提到的编译/链接。在VisualStudio中执行同样的操作

$ 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 

您可以使用以下一个或多个选项来获取您列出的输出:

  • csclassmodifiers
  • 使用
    %ignore
    在纯虚拟方法上,使用cscode添加必要的方法声明
  • csinterfaces字体映射
  • csinterfaces\u派生类型映射
然而,这可能不是实现使类可模仿的目标的最简单的方法。如果不使用<代码>接口< /代码>,请考虑扩展您的POST来清楚地识别您需要实现的是什么。

也可以看看这个帖子:


很抱歉,我不能提供一个实际的代码答案,希望以上内容能帮助您达到目的。

在阅读SWIG文档后尝试一些方法,这些文档清楚地说明了如何做到这一点,然后用具体问题更新您的帖子。@Scholli您能给我指出正确的部分吗?我看了一些例子,读了C#部分,没有看到任何地方提到过C#接口。我想你基本上想要一个等效的-虽然我认为这应该主要通过做s/java/cs进行移植/我认为C#可能有一些更聪明的选择,我将在稍后调查的最新版本的SWIG中有一些更新的位。我认为我对“接口”的使用存在混淆。我知道如何使用SWIG输出C#,但是它输出的C#是一个类,而不是一个接口。如果C++基础是纯抽象的,我希望生成的C是接口,而不是类。
public interface IWidget
{
     void Flob();
}

public class Widget : IWidget
{...}
$ 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