2009-03-12 7 views
5

Ich bin versucht, ein neues COM-Objekt in meiner DLL mit der ATL Simple Object Wizard in Visual Studio erstellen 2005.einfachen ATL-Objekt-Assistenten - "Objekt Xxx ist bereits vorhanden" Fehler

ich die Kurznamen eingeben, für das Objekt und alle anderen Felder werden abgeleitet.

Allerdings, wenn ich Weiter im Assistenten klicken, wird folgende Fehlermeldung kommt:

Object 'IXxxInterfaceName' already exists 

ich meine ganze Lösung für alle Verweise auf IXxxInterfaceName gesucht haben und kann es nicht sehen überall definiert.

Wie ermittelt der Assistent, dass er bereits existiert?

Antwort

2

Ich habe nie herausgefunden, warum der Assistent festgestellt hat, dass der Objektname bereits existiert - ich vermute, irgendwo wurde etwas zwischengespeichert, das ich nicht aufspüren konnte.

Am Ende habe ich beim Erstellen eine 2 an das Ende des Schnittstellennamens angehängt, wodurch es hinzugefügt werden konnte. Dann habe ich alle Vorkommen von IXxxInterfaceName2 durch IXxxInterfaceName ersetzt. Alles hat danach funktioniert.

Wenn ich jemals die Ursache für dieses Problem herausfinden, werde ich die Antwort aktualisieren.

+0

Das Problem besteht immer noch und es ist 2015. Das Löschen eines vorhandenen "ATL Simple Object" bedeutet, dass Sie nicht neu generieren können. Zumindest habe ich keinen Weg gefunden, es zu tun. Ich habe sogar versucht, die Registry von früheren Versuchen zu säubern. Microsoft hat dieses Problem nie besessen. – rtischer8277

+0

Eine Problemumgehung zu diesem zweiten Mal-um-ATL-Simple-Object-Codegenerierungsfehler besteht darin, ein neues MFC-Projekt mit Automatisierung zu erstellen. Fügen Sie eine neue Klasse des Typs ATL Simple Object hinzu. Dann kopiere das neu erzeugte. .... rgs und .h und .cpp Dateien in Ihr Projekt. – rtischer8277

+0

Überprüfen Sie Ihre .idl-Datei. Durch das Erstellen eines einfachen ATL-Objekts werden Schnittstellenanweisungen hinzugefügt. Löschen Sie alle hinzugefügten Zeilen und der Fehler verschwindet. – rtischer8277

1

Ist es in einer Bibliothek definiert, auf die Sie verweisen?

+0

könnte es sein. Kannst du dir einen einfachen Weg vorstellen, wie ich das herausfinden kann, ohne für jede Bibliothek, die ich verweise, auf rohe Gewalt zurückgreifen zu müssen? – LeopardSkinPillBoxHat

+0

Jetzt, wo ich darüber nachdenke, ist es nicht sehr wahrscheinlich, dass es in einer Bibliothek verwendet wird, auf die ich referenziere. Der Schnittstellenname hat ein Standardpräfix, das von allen Schnittstellen in unserem Produkt verwendet wird. Daher bezweifle ich, dass Bibliotheken von Drittanbietern denselben Namen verwenden würden. – LeopardSkinPillBoxHat

+0

wahr. es ist komisch. Was passiert, wenn Sie den Namen leicht eingeben? –

0

Auch passiert in VS 2008. Allerdings saubere Lösung und Clean Projekt von Build-Option löst dies :-)

Verwandte Themen