Možné príčiny zlyhania registrácie ovládacieho prvku OLE (Toto prepojenie môže smerovať na obsah, ktorý je z časti alebo celý v angličtine.)

DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:140346
Tento článok bol archivovaný. Je publikovaný v aktuálnej podobe a už nebude aktualizovaný.
SUHRN
OLE kontrol môže byť registrované pomocou Visual C++ z ponuky Nástrojez skúšobnej nádoby poskytované s kontrolou Development Kit (CDK), alebopomocou regsvr alebo regsvr32 aplikácie dodané s Visual C++. Vniektorých prípadoch registráciu ovládacieho prvku môže zlyhať; používať tento článok naPomocník, riešenie problému.
DALSIE INFORMACIE
Všetky spomenuté metódy pre registráciu OLE ovládací prvok použiťv podstate tej istej techniky. LoadLibrary() sa nazýva sa načítať ovládací prvokdo pamäte, funkcia GetProcAddress() nazýva získať adresuDllRegisterServer() funkcia, a potom DllRegisterServer() sa nazýva nazaregistrovať ovládací prvok.

Dôvody, prečo môžu zlyhať registrácia ovládacieho prvku

  • Jeden alebo viac potrebné OLE DLL nie je na ceste. Pokynov pre rozoslanie OLE kontrol, ako aj vysvetlenie Aké sú potrebné na loď DLL sa nachádza v Shipctrl.wri súbor sa nachádza v rovnakom adresári ako CDK.
  • Kontroly sa načítava knižnice DLL okrem OLE DLL, a že DLL je nie v ceste. Keď kontrola nahrá do pamäte, akékoľvek DLL ktoré sú implicitne naložené prostredníctvom dovozných knižnice tiež sú načítané. Ak ktorýkoľvek z týchto DLL nie sú v ceste, ovládací prvok nie je načítaná úspešne, tak registráciu zlyhá.
  • Jeden alebo viac DLL môže byť nesprávna verzia. Ak ovládací prvok bol postavený novšou verziou knižnice DLL ako jeden nainštalovaný na počítači, Ovládací prvok nie je možné načítať správne, tak registráciu zlyhá.
  • Stará verzia Ocd25.lib sú spojené s. Ak je ovládací prvok pomocou triedami databázy MFC, môžu nastať problém s verzia súboru Ocd25.lib, ktoré sú spojené s.
  • Ovládací prvok OLE sa nachádza na Novell server vzdialenej jednotke. V tomto prípade, prístupové práva k súboru .ocx môžu brániť kontrolu od zaťaženia. Uistite sa, že prístup práva pre .ocx súbor sú nastavené na čítanie, je možné zdieľať prístup, ktorý je typické nastavenie pre spustiteľné súbory.

Riešenie problémov s techniky

Ak žiadny z možných príčin nekvantitatívneho vo vašom prípade, vyskúšajte nasledovnétechniky.

  1. S kontrolu projektu naložený v Visual C++, nastaviť spustiteľný súbor pre ladiace relácia OLE kontrolu skúšobnej nádoby (Tstcon16.exe alebo Tstcon32.exe). po spustení skúšobnej nádoby (podľa Ladiaci nástroj), dostanete upozornenie, že skúšobnej nádoby neposkytuje obsahujú informácie o ladení. Ignorovať a pokračovať.
  2. Z skúšobnej nádoby, sa pokúsi zaregistrovať ovládací. Dívať sa na ladiace výstup z OLE Control DLL alebo ktoréhokoľvek z jej závislých súborov DLL. Ak používate 16-bitové výrobku, nezabudnite spustiť DBWIN program pre prijímanie debug output.

    Informácie o tom, ako nastaviť executable pre knižnice DLL ladiť relácie, prosím pozrite tému Pomocníka "Ladenie dll" kníh online.
Ako alternatívu môžete pokúsite zaregistrovať ovládacíprogramovaním. Najprv vytvorte žiadosť výber MFC AppWizardDialógové okno-založené aplikácia a automatizácie OLE. Umožňujúce automatizácie OLE budeinicializovať OLE kód na zaregistrovať ovládací bude správne pracovať.V CWinApp-odvodené triedy, bude nájsť funkciu InitInstance()s počiatočným kódom takto:
BOOL CTestregApp::InitInstance(){   // Initialize OLE libraries   if (!AfxOleInit())   {      AfxMessageBox(IDP_OLE_INIT_FAILED);      return FALSE;   }				
V tomto momente, pridajte nasledujúci kód segmentu, ktoré vám umožníSkontrolujte návratových kódov z LoadLibrary(), funkcia GetProcAddress(), aDllRegisterServer.
#ifdef _WIN32    HINSTANCE hDLL = LoadLibrary("some.ocx");    if(NULL == hDLL)    {        // See Winerror.h for explaination of error code.        DWORD error = GetLastError();        TRACE1("LoadLibrary() Failed with: %i\n", error);        return FALSE;    }    typedef HRESULT (CALLBACK *HCRET)(void);    HCRET lpfnDllRegisterServer;    lpfnDllRegisterServer =            (HCRET)GetProcAddress(hDLL, "DllRegisterServer");    if(NULL == lpfnDllRegisterServer)    {        // See Winerror.h for explaination of error code.        DWORD error = GetLastError();        TRACE1("GetProcAddress() Failed with %i\n", error);        return FALSE;    }    if(FAILED((*lpfnDllRegisterServer)()))    {        TRACE("DLLRegisterServer() Failed");        return FALSE;    }#else // 16-bit    HINSTANCE hDLL = LoadLibrary("regtest.ocx");    if(HINSTANCE_ERROR > hDLL)    {        // See LoadLibrary() help for explaination of error code.        TRACE1("LoadLibrary() Failed with: %i\n", hDLL);        return FALSE;    }    typedef HRESULT (CALLBACK *HCRET)(void);    HCRET lpfnDllRegisterServer;    lpfnDllRegisterServer =            (HCRET)GetProcAddress(hDLL, "DllRegisterServer");    if(NULL == lpfnDllRegisterServer)    {        // See GetProcAddress() help for explaination of error code.        TRACE("GetProcAddress() Failed");        return FALSE;    }    if(FAILED((*lpfnDllRegisterServer)()))    {        TRACE("DLLRegisterServer() Failed");        return FALSE;    }#endif				
kbinf 1,51 1.52 1.52b 2,00 2.10 2.20 2,50 2.51 2,52 3,00 3.10 3.20 4.00

Upozornenie: Tento článok bol preložený automaticky.

Vlastnosti

ID článku: 140346 – Posledná kontrola: 12/04/2015 12:29:31 – Revízia: 2.0

Microsoft Visual C++ 1.5 Professional Edition, Microsoft Visual C++ 2.0 Professional Edition

  • kbnosurvey kbarchive kbcode kbctrl kbmt KB140346 KbMtsk
Pripomienky