Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vstupní bod identifikuje umístění funkce v knihovně DLL. V rámci spravovaného projektu identifikuje původní název nebo pořadový vstupní bod cílové funkce danou funkci napříč hranicemi spolupráce. Dále můžete namapovat vstupní bod na jiný název a efektivně přejmenovat funkci.
Následuje seznam možných důvodů přejmenování funkce knihovny DLL:
Abyste se vyhnuli používání názvů funkcí rozhraní API, které rozlišují malá a velká písmena.
Dodržování stávajících standardů pojmenování
Pro přizpůsobení funkcím, které přebírají různé datové typy (deklarováním více verzí stejné funkce DLL)
Zjednodušení používání rozhraní API, která obsahují verze ANSI a Unicode
Toto téma ukazuje, jak přejmenovat funkci knihovny DLL ve spravovaném kódu.
Přejmenování funkce v jazyce Visual Basic
Visual Basic používá Function klíčové slovo v Declare příkazu k nastavení DllImportAttribute.EntryPoint pole. Následující příklad ukazuje základní deklaraci.
Friend Class NativeMethods
Friend Declare Auto Function MessageBox Lib "user32.dll" (
ByVal hWnd As IntPtr,
ByVal lpText As String,
ByVal lpCaption As String,
ByVal uType As UInteger) As Integer
End Class
Vstupní bod MessageBox můžete nahradit MsgBox zahrnutím klíčového Alias slova do definice, jak je znázorněno v následujícím příkladu. V obou příkladech Auto klíčové slovo eliminuje nutnost zadat verzi znakové sady vstupního bodu. Další informace o výběru znakové sady naleznete v tématu Určení znakové sady.
Friend Class NativeMethods
Friend Declare Auto Function MsgBox _
Lib "user32.dll" Alias "MessageBox" (
ByVal hWnd As IntPtr,
ByVal lpText As String,
ByVal lpCaption As String,
ByVal uType As UInteger) As Integer
End Class
Přejmenování funkce v C# a C++
Pole DllImportAttribute.EntryPoint můžete použít k určení funkce knihovny DLL podle názvu nebo pořadového čísla. Pokud je název funkce v definici metody stejný jako vstupní bod v knihovně DLL, nemusíte explicitně identifikovat funkci s polem EntryPoint . V opačném případě použijte jeden z následujících formulářů atributů k označení názvu nebo pořadového typu:
[DllImport("DllName", EntryPoint = "Functionname")]
[DllImport("DllName", EntryPoint = "#123")]
Všimněte si, že musíte před pořadovým číslem dát znak křížku (#).
Následující příklad ukazuje, jak nahradit MessageBoxA v MsgBox kódu pomocí EntryPoint pole.
using System;
using System.Runtime.InteropServices;
internal static class NativeMethods
{
[DllImport("user32.dll", EntryPoint = "MessageBoxA")]
internal static extern int MsgBox(
IntPtr hWnd, string lpText, string lpCaption, uint uType);
}
using namespace System;
using namespace System::Runtime::InteropServices;
typedef void* HWND;
[DllImport("user32", EntryPoint = "MessageBoxA")]
extern "C" int MsgBox(
HWND hWnd, String* lpText, String* lpCaption, unsigned int uType);