簡體   English   中英

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

[英]Generate C# Interface from C++ using SWIG

如何使用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#。

您可以使用以下一項或多項來獲取列出的輸出:

  • csclassmodifiers
  • 在純虛方法上使用%ignore ,使用cscode添加必要的方法聲明。
  • csinterfaces typemap
  • csinterfaces_derived typemap

但是,這可能不是實現使您的類可模擬的目標的最簡單方法。 考慮擴展您的帖子以清楚地標識如果不使用interface ,您需要實現此目的的c#。

另請看這篇文章: http//swig.10945.n7.nabble.com/Multiple-inheritance-and-C-any-easy-workarounds-available-td11516.html

對不起,我無法提供實際的代碼答案,希望上面的內容可以幫助您。

從...開始

Swig教程

“接口文件”然后“構建一個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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM