DllImportAttribute.ExactSpelling フィールド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
CharSet フィールドで、指定されたエントリ ポイント名以外のエントリ ポイント名について、共通言語ランタイムがアンマネージド DLL を検索するかどうかを制御します。
public: bool ExactSpelling;
public bool ExactSpelling;
val mutable ExactSpelling : bool
Public ExactSpelling As Boolean
フィールド値
例
場合によっては、Visual Basic開発者は、マネージド コードで DLL 関数を定義するために、Declare ステートメントではなく、DllImportAttribute を使用します。
ExactSpellingフィールドの設定は、そのようなケースの 1 つです。
[DllImport("user32.dll", CharSet = CharSet::Ansi, ExactSpelling = true)]
int MessageBoxA(IntPtr hWnd, String^ Text,
String^ Caption, unsigned int Type);
internal static class NativeMethods
{
[DllImport("user32.dll", CharSet = CharSet.Unicode,
ExactSpelling = true)]
internal static extern int MessageBoxW(
IntPtr hWnd, string lpText, string lpCption, uint uType);
}
Friend Class NativeMethods
<DllImport("user32.dll", ExactSpelling:=False)>
Friend Shared Function MessageBox(hWnd As IntPtr, lpText As String,
lpCaption As String, uType As UInteger) As Integer
End Function
End Class
注釈
false場合、DllImportAttribute.CharSet フィールドを CharSet.Ansi に設定すると、文字 A が付加されたエントリ ポイント名が呼び出され、DllImportAttribute.CharSet フィールドがCharSet.Unicodeに設定されると、文字 W で追加されたエントリ ポイント名が呼び出されます。 通常、マネージド コンパイラはこのフィールドを設定します。
次の表は、プログラミング言語によって課される既定値に基づいて、 CharSet フィールドと ExactSpelling フィールドの関係を示しています。 既定の設定はオーバーライドできますが、慎重に行ってください。
| Language | ANSI | Unicode | Auto |
|---|---|---|---|
| Visual Basic | ExactSpelling:=True | ExactSpelling:=True | ExactSpelling:=False |
| C# | ExactSpelling=false | ExactSpelling=false | ExactSpelling=false |
| C++ | ExactSpelling=false | ExactSpelling=false | ExactSpelling=false |