2016-10-26 7 views
0

よく知られているオープンソースのTechnical IndicatorライブラリであるTA-Libの周りにC#SWIGラッパーを生成しようとしています。C関数のModuleクラスでSwig csclassmodifiersが動作しない

TA-Libのコードは、Cコード(のextern "C" 関数の集合)であり、結果として、SWIGはこのようなクラスを生成する:

// where ModuleName is specified as %module "ModuleName" 
// where SomeCFunc is an extern "C" function in the target C dll 
public class ModuleName { 
    public void SomeCFunc(...) 
} 

しかし。自分のクラスModuleNameをpublicで安全でない部分として定義する必要があります。過去に私はcsclassmodifiersを使用しました。

%typemap(csclassmodifiers) ModuleName "public unsafe partial class" 

これはpublic unsafe partialとしてクラスを生成する必要がありますが、クラスはモジュール名をオフに生成され、この場合にはそれが働いていない - 私は、それ自体はC++クラスをラップしていませんよ。

アイデア?

答えて

2

否や、私は投稿しないていたが、私は(それに取り組ん日にもかかわらず!)これを行う方法を発見#RubberDuckCoding

だから、解決策は

%pragma(csharp) moduleclassmodifiers="public unsafe partial class" 
あなた* .Iガブガブ飲むインタフェースファイルにmoduleclassmodifiersを指定することです

出力モジュールクラスは、

として生成されます。
// where ModuleName is specified as %module "ModuleName" 
// where SomeCFunc is an extern "C" function in the target C dll 
public unsafe partial class ModuleName { 
    public void SomeCFunc(...) 
} 
関連する問題