[英]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 。
對不起,我無法提供實際的代碼答案,希望上面的內容可以幫助您。
從...開始
“接口文件”然后“構建一個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.