Je bent nu offline; er wordt gewacht tot er weer een internetverbinding is

Mogelijke redenen voor OLE-besturingselement Registratiefout

BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.

De Engelstalige versie van dit artikel is de volgende: 140346
Dit artikel is gearchiveerd. Het wordt aangeboden in de huidige vorm en wordt niet meer bijgewerkt.
Samenvatting
OLE-kunnen besturingselementen worden geregistreerd met behulp van Visual C++ in het menu Extrauit de Test Container van het besturingselement Development Kit (CDK) ofmet behulp van de regsvr of regsvr32 toepassingen die met Visual C++. Inde registratie van een besturingselement in bepaalde gevallen kan mislukken; in dit artikel te gebruikenhet probleem oplossen.
Meer informatie
Alle eerder genoemde methoden voor het registreren van een OLE-besturingselement gebruikenin wezen dezelfde techniek. LoadLibrary() aangeroepen om het besturingselement ladenin het geheugen GetProcAddress() wordt aangeroepen om het adres van deDe functie DllRegisterServer() en DllRegisterServer() wordt aangeroepen omhet besturingselement registreren.

Redenen waarom de registratie van een besturingselement kan niet

  • Een of meer van de benodigde OLE DLL is niet het pad. Instructies voor het distribueren van OLE-besturingselementen, alsmede een uitleg van welke dll's te verzenden kunnen worden gevonden in de Shipctrl.wri bestand in dezelfde map als de CDK.
  • Het besturingselement een DLL-bestand dan de OLE DLL wordt geladen en dat dll niet in het pad. Wanneer het besturingselement wordt geladen in het geheugen van de DLL 's die impliciet worden geladen via een bibliotheek importeren ook worden geladen. Als een van deze DLL's niet in het pad, wordt het besturingselement wordt niet geladen Zo registratie mislukt is.
  • Een of meer DLL's mogelijk de verkeerde versie. Als het besturingselement is opgebouwd. met een nieuwere versie van een DLL-bestand dan op de computer geïnstalleerd het besturingselement mogelijk niet goed geladen zodat de registratie is mislukt.
  • Een oude versie van Ocd25.lib wordt gekoppeld. Als het besturingselement met de MFC-databaseklassen, kan er een probleem met de de versie van het bestand Ocd25.lib wordt gekoppeld.
  • Het OLE-besturingselement bevindt zich op een Novell-server extern station. In deze geval, de toegangsrechten voor de OCX-bestand mag voorkomen de besturingselement laden. Zorg ervoor dat de toegangsrechten voor de ocx. bestand zijn ingesteld op alleen-lezen, deelbaar access is het typische instelling voor uitvoerbare bestanden.

Technieken voor probleemoplossing

Als geen van de mogelijke oorzaken waar in uw geval is, probeert u het volgendetechnieken.

  1. Stel het uitvoerbare bestand voor de control-project in Visual C++ wordt geladen, de debug-sessie met de OLE-besturingselement Test Container (Tstcon16.exe of Tstcon32.exe). Wanneer u de Container Test start (onder de debugger), krijgt u een waarschuwing dat de Container van de Test niet debug-informatie bevatten. Dit negeren en doorgaan.
  2. Proberen te registreren van het besturingselement uit de Container testen. Let op uitvoer van het besturingselement voor OLE-DLL of een van haar afhankelijke dll's voor foutopsporing. Als u de 16-bits product denken de DBWIN het programma debug uitvoer ontvangen.

    Debug-sessie voor informatie over het instellen van het uitvoerbare bestand voor een DLL Raadpleeg het help-onderwerp 'Foutopsporing dll' Books Online.
Als alternatief kunt u proberen om het besturingselement te registrerenvia programmering. Maak eerst een AppWizard MFC-toepassing selecterenOp basis van het dialoogvenster toepassings- en OLE-automatisering. OLE-automatisering wordt inschakelenOLE niet initialiseren zodat de code voor het registreren van het besturingselement correct werkt.In de CWinApp afgeleide klasse vindt u de functie InitInstance()met de eerste code als volgt:
BOOL CTestregApp::InitInstance(){   // Initialize OLE libraries   if (!AfxOleInit())   {      AfxMessageBox(IDP_OLE_INIT_FAILED);      return FALSE;   }				
Op dit moment het volgende codesegment toevoegen waarmee uControleer de retourcodes van LoadLibrary(), GetProcAddress(), enDllRegisterServer.
#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 tussen hetzij 2,51 2.52 3.00 3.10 3,20 4.00

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 140346 - Laatst bijgewerkt: 12/04/2015 12:29:29 - Revisie: 5.0

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

  • kbnosurvey kbarchive kbcode kbctrl kbmt KB140346 KbMtnl
Feedback