تحديد يؤشر إدخال
يؤشر الإدخال يعرف الموقع دالة في DLL. ضمن مشروع مدارة، الأصلي اسم أو يؤشر الإدخال ترتيبي دالة الهدف بتعريف هذه الدالة عبر حدود interoperation. علاوة على ذلك، يمكنك تعيين نقطة الإدخال إلى اسم آخر، فاعلية إعادة تسمية دالة.
يتبع هو lهوt أسباب المحتملة لإعادة تسمية دالة DLL:
إلى تجنب استخدام أسماء الدالات API حساسة لحالة الأحرف
إلى التوافق مع معايير التسمية موجود
إلى تناسب الدالات التي تأخذ أنواع بيانات مختلفة (بواسطة المعرف إصدارات متعددة من نفس دالة DLL)
إلى تبسيط استخدام واجهات برمجة التطبيقات التي تحتوي على الإصدارات ANSI أو Unicode
يوضح هذا pic إلى كيف إلى إعادة تسمية دالة DLL في تعليمات برمجية المدارة.
إعادة تسمية دالة في Visual أساسى
يستخدم Visual أساسى دالة كلمة أساسية في Declare عبارة لتعيين DllImportAttribute.EntryPointالحقل. يلي مثال يظهر إعلان أساسية.
Imports System.Runtime.InteropServices
Public Class Win32
Declare Auto Function MsgBox Lib "user32.dll" _
Alias MessageBox (ByVal hWnd As Integer, ByVal txt As String,_
ByVal caption As String, ByVal Typ As Integer) As Integer
End Class
يمكنك استبدال MessageBox يؤشر الإدخال بمع MsgBox بما في ذلك الاسم المستعار كلمة أساسية في التعريف الخاص بك، كما هو موضح في المثال التالي. في كل من الأمثلة الكلمة الأساسية تلقائي يلغي الحاجة إلى تحديد الإصدار التعيين الأحرف نقطة الإدخال. For المزيد معلومات حول selecting a حرف التعيين, see Specifying a حرف التعيين.
Imports System.Runtime.InteropServices
Public Class Win32
Declare Auto Function MsgBox Lib "user32.dll" _
Alias MessageBox (ByVal hWnd As Integer, ByVal txt As String,_
ByVal caption As String, ByVal Typ As Integer) As Integer
End Class
Renaming a دالة في C# و C++
You can استخدم the DllImportAttribute.EntryPoint حقل إلى specify a DLL دالة حسب الاسم أو أعداد ترتيبية. If the اسم دالة في your أسلوب تعريف هو the same كـ the إدخال يؤشر في the DLL, you do not have إلى بوضوح identify the دالة مع the EntryPoint حقل. Otherwise, استخدم واحد of the following سمة forms إلى indicate a اسم أو أعداد ترتيبية:
[DllImport("dllname", EntryPoint="Functionname")]
[DllImport("dllname", EntryPoint="#123")]
Notice that you must بادئة an أعداد ترتيبية مع the pound sign (#).
The following مثال demonstrates how إلى استبدال MessageBoxA مع MsgBox في your تعليمات برمجية بواسطة using the EntryPoint حقل.
using System.Runtime.InteropServices;
public class Win32 {
[DllImport("user32.dll", EntryPoint="MessageBoxA")]
public static extern int MsgBox(int hWnd, String text, String caption,
uint type);
}
using namespace System::Runtime::InteropServices;
typedef void* HWND;
[DllImport("user32", EntryPoint="MessageBoxA")]
extern "C" int MsgBox(HWND hWnd,
String* pText,
String* pCaption,
unsigned int uType);
راجع أيضًا:
المرجع
المبادئ
قم بإنشاء النماذج الأولية في تعليمات برمجية المدارة