Bagikan melalui


DllImportAttribute.ExactSpelling Bidang

Definisi

Mengontrol apakah CharSet bidang menyebabkan runtime bahasa umum mencari DLL yang tidak dikelola untuk nama titik entri selain yang ditentukan.

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

Nilai Bidang

Contoh

Dalam beberapa kasus, pengembang Visual Basic menggunakan DllImportAttribute, alih-alih menggunakan Declare pernyataan , untuk menentukan fungsi DLL dalam kode terkelola. ExactSpelling Mengatur bidang adalah salah satu kasus tersebut.

[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

Keterangan

Jika false, nama titik entri ditambahkan dengan huruf A dipanggil saat DllImportAttribute.CharSet bidang diatur ke CharSet.Ansi, dan nama titik entri ditambahkan dengan huruf W dipanggil saat DllImportAttribute.CharSet bidang diatur ke CharSet.Unicode. Biasanya, kompilator terkelola mengatur bidang ini.

Tabel berikut ini memperlihatkan hubungan antara CharSet bidang dan ExactSpelling , berdasarkan nilai default yang diberlakukan oleh bahasa pemrograman. Anda dapat mengambil alih pengaturan default, tetapi lakukan dengan hati-hati.

Bahasa ANSI Unicode Otomatis
Visual Basic ExactSpelling:=True ExactSpelling:=True ExactSpelling:=False
C# ExactSpelling=false ExactSpelling=false ExactSpelling=false
C++ ExactSpelling=false ExactSpelling=false ExactSpelling=false

Berlaku untuk