从C+生成C#接口+;使用SWIG 我如何使用SWIG从C++使用SWIG生成一个C接口(或者至少一个C模拟的基类)?p>
鉴于: C++: 我想输出C#: 注意:解决方案不必是接口,但我需要能够使用Moq或Rhino.Mocks等模拟框架来模拟C#Widget类的基础。我的尝试只生成了没有公共构造函数的C# “接口文件”和“构建C#模块”是其中的重要内容。以下是同一文件中提到的编译/链接。在VisualStudio中执行同样的操作从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
$ 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
- 使用
在纯虚拟方法上,使用cscode添加必要的方法声明%ignore
csinterfaces字体映射
csinterfaces\u派生类型映射
很抱歉,我不能提供一个实际的代码答案,希望以上内容能帮助您达到目的。在阅读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