とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub

PInvoke.net Visual Studio Extensionを使ってみた

PInvoke.net Visual Studio Extension

.NETからWindows APIなどのアンマネージコードを利用する場合は
プラットフォーム間の型が違うために方の統一をしてやる必要がある。

それをCOM相互運用や、マーシャリングなどと言い、それが非常に面倒な呼び出しであることは
以前の記事で記載したとおりです。
C#からC++DLLを呼び出してマーシャリングの動きを確認した(前編)
C#からC++DLLを呼び出してマーシャリングの動きを確認した(中編)
C#からC++DLLを呼び出してマーシャリングの動きを確認した(後編)

API関数を呼び出す場合は、API関数の型や構造体を.NET側で利用できるように
定義していく必要があります。

Visual Studioで開発を行っている場合は
PInvokeが公開している「PInvoke.net Visual Studio Extension」を使うことで

この面倒な作業をほぼ解消することが可能なようで
実際にアドオンをインストールして使ってみました。

20140723_pinvoke02.png

20140723_pinvoke03.png

非常に便利。
使いたい関数を検索するだけで、C#側の定義を作成してくれました。

ただ、VB.NETを使っている場合はAny型で定義されてしまうこともあるらしく
Any型はアンマネージドコードとは相互変換できないために本当に使える型を探す必要があるようです。

Extentionを導入する方法は、PInvoke.net Visual Studio Extensionのサイトからインストールするか、
Visual Studioの拡張機能マネージャーから行うことができます。

ApiViewer:PInvokeアドオンを使わない場合


上記はVisual Studioのアドオンであるため、それ以外の開発環境の場合は
やはり不便です。

同様の機能が欲しい場合は「ApiViewer」というツールがおすすめ。
インストールが必要なため、持ち運びは難しいですが、
PInvoke.net Visual Studio Extension同様にAPI定義の検索ができます。
apiviewer
C#で利用する場合はOptionからC#を選択しておくことを忘れずに。




次のページ

FC2Ad