Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Aynı DLL'yi hem yük zamanı hem de çalışma zamanı dinamik bağlamasında kullanabilirsiniz. Aşağıdaki örnek, Myputs DLL'sine bir tanıtıcı almak için LoadLibrary işlevini kullanır (bkz. Basit Bir Kitaplık Oluşturma Dynamic-Link). LoadLibrary başarılı olursa, program DLL'nin myPuts işlevinin adresini almak için GetProcAddress işlevinde döndürülen tanıtıcıyı kullanır. DLL işlevini çağırdıktan sonra, program DLL'yi kaldırmak için FreeLibrary işlevini çağırır.
Program çalışma zamanı dinamik bağlama kullandığından, modülü DLL için içeri aktarma kitaplığına bağlamak gerekli değildir.
Bu örnekte, çalışma zamanı ile yük süresi dinamik bağlaması arasındaki önemli bir fark gösterilmektedir. DLL kullanılamıyorsa, yük süresi dinamik bağlama kullanan uygulama yalnızca sonlandırılmalıdır. Ancak çalışma zamanı dinamik bağlama örneği hataya yanıt verebilir.
// A simple program that uses LoadLibrary and
// GetProcAddress to access myPuts from Myputs.dll.
#include <windows.h>
#include <stdio.h>
typedef int (__cdecl *MYPROC)(LPCWSTR);
int main( void )
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
// Get a handle to the DLL module.
hinstLib = LoadLibrary(TEXT("MyPuts.dll"));
// If the handle is valid, try to get the function address.
if (hinstLib != NULL)
{
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myPuts");
// If the function address is valid, call the function.
if (NULL != ProcAdd)
{
fRunTimeLinkSuccess = TRUE;
(ProcAdd) (L"Message sent to the DLL function\n");
}
// Free the DLL module.
fFreeResult = FreeLibrary(hinstLib);
}
// If unable to call the DLL function, use an alternative.
if (! fRunTimeLinkSuccess)
printf("Message printed from executable\n");
return 0;
}
İlgili konular