AfxLoadLibrary
Použití AfxLoadLibrary mapování knihovnu DLL.
HINSTANCE AFXAPI AfxLoadLibrary(
LPCTSTR lpszModuleName
);
Parametry
lpszModuleName
Odkazuje na řetězec zakončený hodnotou null, který obsahuje název modulu (buď.Knihovna DLL nebo.Soubor EXE).Zadaný název je název modulu.Pokud řetězec Určuje cestu souboru v zadaném adresáři neexistuje, funkce se nezdaří.
Pokud není zadána cesta a název souboru příponu vynecháte, bude výchozí rozšíření.DLL je připojen.Řetězec název_souboru však může obsahovat koncové bodu znak (.) označuje, že název modulu nemá žádnou příponu.Pokud není zadán, funkce vyhledá soubor v následujícím pořadí:
Adresář, ze kterého aplikace načtena.
Aktuální adresář.
Windows 95/98: adresáře systému Windows.Windows NT: systémového adresáře Windows 32-bit.Je název tohoto adresáře SYSTEM32.
Pouze v systému Windows NT: systémového adresáře Windows 16 bitů.Není žádná funkce Win32, která získá cestu tento adresář, ale je prohledán.Je název tohoto adresáře systému.
Adresář systému Windows.
Adresáře, které jsou uvedeny v proměnné prostředí PATH.
Vrácená hodnota
Pokud se podaří funkce, vrácená hodnota je popisovač v modulu.Pokud selže funkce, je vrácena hodnota NULL.
Poznámky
Vrátí popisovač použitý v GetProcAddress získat adresu funkce knihovny DLL.AfxLoadLibrarylze také mapování dalších modulů spustitelného souboru.
Každý proces udržuje počet odkazů pro každý modul načíst knihovnu.Tento počet odkazů je zvýšen pokaždé AfxLoadLibrary se nazývá a je snížena při každém AfxFreeLibrary se nazývá.Nula dosáhne počet odkazů je modul nenamapované z adresového prostoru procesu volajícího a již není platný popisovač.
Používejte AfxLoadLibrary a AfxFreeLibrary (namísto funkce Win32 LoadLibrary a FreeLibrary) Pokud aplikace používá více podprocesů, a pokud to dynamicky načítá knihovna DLL rozšíření.Pomocí AfxLoadLibrary a AfxFreeLibrary pojistitelům spouštěcí a ukončovací kód, když je načítání a uvolňování knihoven DLL rozšíření není poškozený globální stav MFC.
Pomocí AfxLoadLibrary aplikace vyžaduje dynamické propojení verze DLL MFC; v záhlaví souboru AfxLoadLibrary, Afxdll_.h, je pouze součástí Pokud MFC je propojen s aplikací jako knihovna DLL.To je záměrné, protože verze knihovny DLL nebo vytvoření knihovny DLL rozšíření MFC propojení.
Příklad
// The following shows how to create a MDI based application
// using a generic CView derived class that is implemented in
// a dynamically loaded MFC Extension DLL.
typedef CRuntimeClass * (*GETDLLVIEW)();
BOOL CUserApp::InitInstance()
{
// Standard Application Wizard generated initialization excluded.
...
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views
//Load MFC Extension DLL based view class.
m_hViewDll = AfxLoadLibrary(szMyViewDllPath);
if (!m_hViewDll)
{
CString str;
str.Format(_T("Error: Cannot find component %s"), szMyViewDllPath);
AfxMessageBox(str);
return FALSE;
}
GETDLLVIEW GetMyView = (GETDLLVIEW)GetProcAddress(m_hViewDll, "GetMyView");
ASSERT(GetMyView != NULL);
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_NVC_MFC_DLLUserTYPE,
RUNTIME_CLASS(CUserDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
GetMyView());
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
// Standard Application Wizard generated initalization excluded.
...
return TRUE;
}
int CUserApp::ExitInstance()
{
if (NULL != m_hViewDll)
{
AfxFreeLibrary(m_hViewDll);
m_hViewDll = NULL;
}
return CWinApp::ExitInstance();
}
Požadavky
Záhlaví: afxdll_.h