2009-03-12 20 views
5

Estoy intentando crear un nuevo objeto COM en mi DLL utilizando el Asistente ATL Simple Object en Visual Studio 2005.ATL Asistente para objetos simples - "Objeto Xxx ya existe" error

que introduzca el nombre corto para el objeto y todos los otros campos se derivan.

Sin embargo, al hacer clic en Siguiente en el asistente, el mensaje de error siguiente aparece:

Object 'IXxxInterfaceName' already exists 

he buscado toda mi solución para todas las referencias a IXxxInterfaceName y no puedo verlo en cualquier lugar definido.

¿Cómo determina el asistente que ya existe?

Respuesta

2

Nunca descubrí por qué el asistente determinó que el nombre del objeto ya existía, supongo que algo fue almacenado en caché en algún lugar que no pude localizar.

Al final, agregué un 2 al final del nombre de la interfaz al crearlo, lo que permitió que se agregara. Luego reemplacé todas las ocurrencias de IXxxInterfaceName2 con IXxxInterfaceName. Todo funcionó después de esto.

Si alguna vez localizo la causa raíz de este problema, actualizaré la respuesta.

+0

El problema persiste y es 2015. La eliminación de un 'Objeto simple ATL' existente significa que no puede volver a generar. Al menos no he encontrado una manera de hacerlo. Incluso he recurrido a limpiar el registro de intentos anteriores. Microsoft nunca ha tenido este problema. – rtischer8277

+0

Una solución a esta falla de generación de código de ATL-Simple-Object por segunda vez es crear un nuevo proyecto MFC con automatización. Agregue una nueva clase de tipo ATL Simple Object. Luego copie el recién generado. .... rgs y .h y .cpp archiva en su proyecto. – rtischer8277

+0

Verifique su archivo .idl. Crear un 'Objeto simple ATL' agrega instrucciones de interfaz. Borre todas estas líneas agregadas y el error desaparecerá. – rtischer8277

1

¿Está definido en una biblioteca a la que hace referencia?

+0

Podría ser. ¿Puedes pensar en una manera fácil de resolver esto sin tener que recurrir a la fuerza bruta para cada biblioteca a la que me refiero? – LeopardSkinPillBoxHat

+0

En realidad, ahora que lo pienso, no es muy probable que se use en una biblioteca a la que me refiero. El nombre de la interfaz tiene un prefijo estándar utilizado por todas las interfaces de nuestro producto. Así que dudo que las bibliotecas de terceros utilicen el mismo nombre. – LeopardSkinPillBoxHat

+0

cierto. es raro. ¿Qué pasa si minimizas el nombre un poco? –

0

También ocurre en VS 2008. Sin embargo, la solución limpia y el proyecto Limpiar desde la opción de compilación resuelve esto :-)

Cuestiones relacionadas