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

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

 まず、呼び出される Win32 DLLから作成します。DLLウィザードを選択します。

 ユニットをひとつ追加します。

 DLLのプロジェクトソースにコードを書きます。書き足すのはexports の部分です。

 次に、追加したUnit側にコードを書きます。足し算をする関数を作ってみました。呼び出し規約をstdcallにするのを忘れずに。

 いったん保存するなどして、次に新規プロジェクトをこのプロジェクトグループに追加します。

 Delphi for .NET のVCLフォームアプリケーションを追加します。(WinFormアプリケーションでもかまわないと思います。)

 フォームにボタンと、Editをおきました。

 コードを記述します。まずuses に system.Runtime.InteropServices を追加します。次にDLLImport属性をつけて、関数をインポートするコードを書きます。最後に、ボタンのイベントハンドラでインポートした関数をコールする部分を書きます。

 このプロジェクトをDLLを保存したプロジェクトと同じディレクトリ位置に保存します。その後、アプリケーションを実行します。

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


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2018-02-02
作成日: 2005-01-01
iPentec all rights reserverd.