エクスポートされた DLL 関数の情報: Visual Basic の要件

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

142840
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
概要
Visual Basic プログラムで、エクスポートされた DLL から関数を使用するには Visual Basic で正常に使用する関数の特定要件を満たす必要があります。 Visual Basic が Windows API の呼び出しと同様に動作するこのエクスポートされた DLL 関数を予測します。 この資料で独自のエクスポートされた DLL を作成する場合 Visual Basic 要件と、要件の一部まとめています。
詳細
Visual Basic の機能の 1 つは、DLL に格納された関数を使用できることです。 Visual Basic では、エクスポートされた DLL 関数の Windows API 関数と同じ属性を持つこと。 エクスポートされた DLL から関数を Visual Basic プログラムで使用する Visual Basic 必要次です。

関数を呼び出すための要件

  • 右から左に渡される引数: 引数はポインターまたは参照の種類を指定しない限り、値によって引き渡されます。

  • 値による </a0> または参照渡し - 既定の引数を渡す: Visual Basic は参照によってすべての引数を渡します; 参照によって渡される引数には、引数の値ではなく、引数を含む、32 ビット アドレス含まれています。 ただし、エクスポートされた DLL 内のほとんどの関数は、値は、引数なく 32 ビット アドレスを期待します。 引数を値渡しするには ByVal キーワードを使用します。

  • スタック保守は呼び出された関数によって処理されます。
  • 名前の感度の場合: 関数名は大文字と小文字が区別 Win16 でされません。 Win32 では、[関数名は大文字と小文字を区別するようになりました。 類似が大文字、名前が文字を使用して関数の呼び出しを行う関数は、異なるに格納、エクスポートされた DLL を実行時エラーが発生関数名が存在しないため。

    たとえば、User32.dll は、Windows 環境に関する情報を返す GetSystemMetrics と呼ばれる関数名。 ステートメントには、この関数を呼び出します宣言は、次の使用します。
          Declare Function GETSYSTEMMETRICS% Lib "User" ByVal nIndex%)						
    関数 GETSYSTEMMETRICS ではないため User32.dll、実行時エラーが発生します。

    誤って関数名を入力によるエラーを回避するには、関数名にエイリアス代入します。 たとえば、エイリアスを割り当てることができます、GetSystemMetrics 関数を使って、次に GetWindowsEnv 宣言ステートメント。
          Declare Function GetWinEnv Lib "User32" Alias GetSystemMetrics _                       (ByVal int1 As Integer) As Integer.						

Visual C++ でのエクスポートされた DLL の作成に関する注意事項

Microsoft Visual C++ を使用して、Visual Basic 要件を満たす、エクスポートされた DLL の作成に関するいくつかの情報を説明します。 他の C++ コンパイラ可能性がありますか可能性があります、ここで使用されるキーワードをサポートしていません。

Visual Basic も、引数を受け取る関数でスタックを維持することが必要です。 スタックの適切な保守を実行できる Visual C++ キーワードが _stdcall です。

_stdcall キーワードは、関数名の前にアンダースコアを装飾し、'@ n' n には、関数の引数および戻り値を格納する必要なバイトの番号が入りますを追加します。 たとえば、GetWindowSize と呼ばれる関数を作成して、スタックの保守を提供するために _stdcall キーワードを使う場合、関数とおり定義は。
   int GetWindowSize (int nIndex)				

次に、エクスポートされる名前の結果を示します。
   _GetWindowSize@8				

_stdcall キーワードによって追加される前、アンダースコアに注意ください。

ファイルのエクスポート、_declspec(dllexport) キーワードまたは DEF ファイル EXPORT セクションを使用するか、できます。 _declspec(dllexport) キーワード、関数のエクスポートが、名前の装飾を維持します。 DisplayMessage と呼ばれる関数で _stdcall と _declspec(dllexport) の両方のキーワードを実装する例を次に示します。
   _delcspec(dllexport) long _stdcall DisplayMessage (LPSTR szMessage)				

DEF ファイルも、関数名をエクスポートし、名前の装飾を削除します。 次の例、DEF ファイルの EXPORT セクションの DisplayMessage と呼ばれる関数の実装方法に示します。
   EXPORTS      DisplayMessage				
関連情報
Visual Basic に付属の Vb4dll.txt。

Visual Basic Visual Basic プログラマーズ ガイド」、章の 26,「呼び出しプロシージャ DLL 内で」
kbNoKeyword DLL 関数の C++ C のエクスポート

警告: この資料は、自動翻訳されています

プロパティ

文書番号:142840 - 最終更新日: 03/01/2014 10:00:00 - リビジョン: 2.0

  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • kbnosurvey kbarchive kbinfo kbmt KB142840 KbMtja
フィードバック