問題

私は現在、古いC ++アプリケーションとやりとりする必要がある新しいC#プロジェクトを作成しています。 C#アプリケーションで使用する必要があるC ++アプリケーションに既に存在するエラー列挙があります。

ファイルが一緒に更新されていない場合、同期の問題が発生する可能性があるため、C#で列挙を再宣言したくありません。

私の質問はこれだけです: 次のように宣言された列挙を取る方法はありますか?

 typedef enum
{
    eDEVICEINT_ERR_FATAL = 0x10001
    ...
} eDeviceIntErrCodes;
 

C#プログラムで次のように使用します。

 eDeviceIntErrCodes.eDEVICEINT_ERR_FATAL
 

  ベストアンサー

PInvoke Interopアシスタントツール http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=14120 をチェックしてください。ネイティブメソッドのPInvokeシグネチャを生成するための便利なツールです。

あなたのenumにフィードすると、このコードが生成されます。 C ++バージョンが変更されるたびに列挙型のC#定義を最新の状態に保つために、自動化されたプロセスを構築できるように、ツールのコマンドラインバージョンが含まれています。

 
    public enum eDeviceIntErrCodes 
    {
        /// eDEVICEINT_ERR_FATAL -> 0x10001
        eDEVICEINT_ERR_FATAL = 65537,
    }
 

  同じタグがついた質問を見る

c#c++