Поделиться через


DllImportAttribute.ExactSpelling Поле

Определение

Контролирует запуск поиска имен точек входа помимо заданной точки в неуправляемой динамической библиотеке (DLL), выполняемого средой CLR, полем CharSet.

public: bool ExactSpelling;
public bool ExactSpelling;
val mutable ExactSpelling : bool
Public ExactSpelling As Boolean 

Значение поля

Примеры

В некоторых случаях разработчики Visual Basic используют DllImportAttributeвместо Declare оператора , чтобы определить функцию DLL в управляемом коде. ExactSpelling Задание поля является одним из таких случаев.

[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задано значение , имя точки входа, добавляемое буквой A, вызывается, когда DllImportAttribute.CharSet для поля задано значение CharSet.Ansi, а имя точки входа, добавляемое с буквой W, вызывается, когда DllImportAttribute.CharSet для поля задано значение CharSet.Unicode. Как правило, это поле задают управляемые компиляторы.

В следующей таблице показана связь между CharSet полями и ExactSpelling на основе значений по умолчанию, налагаемых языком программирования. Вы можете переопределить параметр по умолчанию, но делать это с осторожностью.

Язык ANSI Юникод Auto (Автоматически)
Visual Basic ExactSpelling:=True ExactSpelling:=True ExactSpelling:=False
C# ExactSpelling=false ExactSpelling=false ExactSpelling=false
C++ ExactSpelling=false ExactSpelling=false ExactSpelling=false

Применяется к