PInvoke による .NET からWin32 DLLの呼び出し

ここではPInvokeを使って.NETから Win32 DLLを呼び出せるかやってみましょう。 まず、「新規作成」で 「その他」を選択します。
PInvoke による .NET からWin32 DLLの呼び出し:画像1

 まず、呼び出される Win32 DLLから作成します。DLLウィザードを選択します。
PInvoke による .NET からWin32 DLLの呼び出し:画像2

 ユニットをひとつ追加します。
PInvoke による .NET からWin32 DLLの呼び出し:画像3

 DLLのプロジェクトソースにコードを書きます。書き足すのはexports の部分です。
PInvoke による .NET からWin32 DLLの呼び出し:画像4

 次に、追加したUnit側にコードを書きます。足し算をする関数を作ってみました。呼び出し規約をstdcallにするのを忘れずに。
PInvoke による .NET からWin32 DLLの呼び出し:画像5

 いったん保存するなどして、次に新規プロジェクトをこのプロジェクトグループに追加します。
PInvoke による .NET からWin32 DLLの呼び出し:画像6

 Delphi for .NET のVCLフォームアプリケーションを追加します。(WinFormアプリケーションでもかまわないと思います。)
PInvoke による .NET からWin32 DLLの呼び出し:画像7

 フォームにボタンと、Editをおきました。
PInvoke による .NET からWin32 DLLの呼び出し:画像8

 コードを記述します。まずuses に system.Runtime.InteropServices を追加します。次にDLLImport属性をつけて、関数をインポートするコードを書きます。最後に、ボタンのイベントハンドラでインポートした関数をコールする部分を書きます。
PInvoke による .NET からWin32 DLLの呼び出し:画像9

 このプロジェクトをDLLを保存したプロジェクトと同じディレクトリ位置に保存します。その後、アプリケーションを実行します。
PInvoke による .NET からWin32 DLLの呼び出し:画像10

 ボタンを押します、結果が正しく受け取れていることが確認できました。  とんでもない値が帰ってくる場合や、エラーが出る場合は、同じ位置に両方のプロジェクトが保存されているか、呼び出し規約が正しいか確認してください。


AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2005-01-01
Copyright © 1995–2025 iPentec all rights reserverd.