[C#] C#からC++のDLLを呼ぶ方法

最近は新規Windowsアプリ開発はC#でやるようになった。だけど、「既存のC/C++ライブラリ使い回す代わりに工数減らして」と発注元から要求されたり、サードパーティから購入したC言語DLLの商用ライブラリをリンクしないといけなかったりと、いまだにC/C++との連携は避けられない。

というわけで、C#からC/C++のDLL関数を呼び出す手順を覚え書きとして記しておく。

サンプルコード

以下のような簡単なテスト関数をC++で書いてDLLをビルドした。このDLLの関数をC#のテストアプリから呼び出してみる。

参考サイト

チュートリアル: ダイナミック リンク ライブラリの作成と使用 (C++)
http://msdn.microsoft.com/ja-jp/library/ms235636.aspx

pInvokeStackImbalance MDA
http://msdn.microsoft.com/ja-jp/library/0htdy0k3(v=vs.110).aspx