2010-12-22 16 views
1

Ich war mit einer Anwendung und es funktionierte perfekt. Nach ein paar Monaten, in denen ich es nicht benutzt habe, habe ich versucht, es auszuführen, und es funktioniert nicht. Es zeigt ein Meldungsfeld an, das besagt, dass es ein COM-Objekt nicht instanziieren kann.Tracking-COM-Objekt Fehler in der Anwendung

Wissen Sie, wie Sie Fehler in COM-Objekten verfolgen können?

Antwort

1

Sie können ProcessMonitor verwenden und versuchen, den Registrierungsschlüssel zu finden, der möglicherweise falsch ist. Die andere Option ist die Verwendung von http://www.moduleanalyzer.com, es fängt CoCreateInstance ab und zeigt alle erstellten COM-Objekte und die Rückgabewerte an.

+0

Ich habe versucht, ProcessMonitor, aber wirklich habe ich nicht verstanden, wie es mir helfen kann. Ich habe die Registrierungsschlüssel angesehen und alles scheint in Ordnung zu sein. Das Problem wurde vom Modul-Analysator erkannt, der einen COM-Fehler zeigte, den ich beheben konnte, indem ich erneut eine DLL registrierte. Es sieht so aus, als ob eine neue Version eines Objekts installiert wurde und die alte Anwendung nach der alten Schnittstelle gefragt hat, die für das Objekt nicht mehr gültig ist. Nach der Registrierung des korrekten Objekts läuft die Anwendung reibungslos! –

1

Ausführen reagiert Tool auf COM-Objekt-DLL, um zu überprüfen, dass es alle erforderlichen dlls hat, registrieren Sie die COM dll/exe erneut.

Alle HRESULTS von Debugging/logs? Irgendwelche Änderungen in den Wohnungsmodellen?

Sie können den Wohnungstyp nicht ändern, nachdem Sie einen festgelegt haben. Wenn also das Objekt eines der Modelle nicht verwenden kann und Sie versuchen, CoCreate zu erstellen, schlägt es fehl. Deshalb rufen Sie CoInit niemals innerhalb des DLL-Hauptthreads auf.

+0

DebugView zeigt keinen Fehler an. Ja, ich verstehe, dass CoCreate unter diesen Umständen fehlschlägt, aber ich möchte wissen, welches Objekt die CoCreateInstance fehlgeschlagen ist. –