2009-05-15 7 views
4

.dllでexternメソッドを使用する方法を知っていますが、extern構造体はどのようにしますか?C#で使用するネイティブC .dllから構造体定義をエクスポートする方法

私は、このようなMYSTRUCTUREが最初に同じことを定義せずに

私はC#のコードの断片からgetStruct()を呼び出すことができますどのように
typedef struct 
{ 
    int A; 
    int B; 
    char C; 
} myStructure; 

のようなものである

extern __declspec(dllexport) myStructure getStruct(); 

としてCメソッドを作成したいですC#の正確な構造体?私は一箇所でコードを変更するだけで済むように、myStructureの集中宣言を保持したいと思います。

ありがとうございました!

答えて

3

別の方法ではどうですか?構造体をC# in T4に定義し、各プロジェクトで新しい形式にgenを継承します。

ie。 C#プロジェクトでgencsharp.tt中のstruct

のbase.tt

// C#の定義が は "base.tt" ... gencplusplusで出力C#

が含まれます。 CPPプロジェクト でTTは "base.tt" が含ま... GENに私はC#のでP /呼び出しのビットをやったと私はALWAをした.hファイル

+0

構造体が第三者のライブラリに由来する場合はどうなりますか? –

+0

タイプをテンプレートにインポートし、そこに反映させますか? –

1

CPPをC#]を使用ysは、Win32の構造体に対応するC#の構造体を定義する必要がありました。ランタイムは、構造体定義を使用して、データを非管理対象から管理対象に整列化します。 Preetの答えはおそらく最高です。

関連する問題