Probleme mit geladenen TypeLibraries von COM-Servern



  • Servus,

    ehrlich gesagt, weiß ich nicht, ob ich hier richtig bin, aber ich versuchs trotzdem. Ich laß mir aus COM-DLL's mit einer Kombination aus LoadRegTypeLib und LoadTypLib die Typelibraries direkt aus den Servern oder aus der Registry auslesen.
    Mein Problem ist allerdings, wenn ich nun den Server als OleObjekt geladen habe und ich selbsterstellte Funktionen über mein Programm im Server ansteuern möchte, kommt die Fehlermeldung "Fehler beim Laden Typelibrary/Dll".

    Angesichts meines begrenzten Wissens in Bezug auf windowseigene Funktionen gehe ich jetzt mal davon aus, daß der Fehler mit dem vorherigen Laden der TypeLibs zu tun hat.

    Kann mir jemand helfen und mir sagen, wie ich diesen Fehler beseitige. Hier noch die Codeausschnitte meiner Routinen:

    Laden der Typlibs:

    // Private Variablen festlegen;
            serverfullname = server;
            servername = ExtractFileName(server);
            serverpath = ExtractFilePath(server);
    
            if (serverpath !="") ChDir(serverpath);
            serverwcharname = new wchar_t[server.WideCharBufSize()];
            servername.WideChar(serverwcharname, servername.WideCharBufSize());
    
            // Server: Typelibrary holen
            if FAILED(LoadRegTypeLib(GetGUID, GetVersion.majorversion, GetVersion.minorversion, GetLCID, &typelibrary))
                    {
                    LoadTypeLib(serverwcharname, &typelibrary);
                    RegisterTypeLib(typelibrary, serverwcharname, NULL);
                    }
            delete[](serverwcharname);
    
            // Server: TypeLibrary-Attribute holen
            typelibrary->GetLibAttr(&tlibattr);
    
            version.majorversion = tlibattr->wMajorVerNum;
            version.minorversion = tlibattr->wMinorVerNum;
    
            // Server: Anzahl der gespeicherten Typeinfo's holen
            tlbinfocount = typelibrary->GetTypeInfoCount();
    
            // Server: GUID und GUID-String bereitstellen
            serverlcid = tlibattr->lcid;
            serverguid = tlibattr->guid;
            serverguidstring = GUIDToString(serverguid);
            this->buildcoclasses();
    
            typelibrary->ReleaseTLibAttr(tlibattr);
            if (serverpath !="") ChDir(ExtractFilePath(Application->ExeName));
            typelibrary->Release();
            return S_OK;
    

    Die servereigenen Funktionen werden wie folgt angesprochen:

    module.OleFunction("Name der Funktion");
    

    Hier kommt auch der Fehler.

    Wäre super, wenn mir jemand sagen könnte, was hier falsch ist.

    Danke

    Udo

    [ Dieser Beitrag wurde am 25.01.2003 um 01:19 Uhr von Darkheart editiert. ]



  • Wäre super, wenn mir jemand sagen könnte, was hier falsch ist.

    Eigentlich so ziemlich alles. Eine ausführliche Erläuterung würde jedoch den Forenrahmen sprengen. Deshalb mein Tipp (aus der MSDN): SEE THE OLE-PROGRAMMERS-REFERENZ IN THE WIN32-SDK!

    ... meines begrenzten Wissens in Bezug auf windowseigene Funktionen ...

    Da ist die OLE-Programmierung für dich genau der richtige Einstieg in die Windows-Programmierung ... 😕

    Amen! 🙄 🙄 🙄



  • Danke ! Das hilft 100%ig weiter! Bist wahrscheinlich schon mit dem Wissen auf die Welt gekommen oder ? Einen Kommentar zu Deinem Eintrag spar ich mir lieber. Sowas ist mir echt zu blöd!


Anmelden zum Antworten