Programación General > Visual C++

 Proyecto Atl En Visual Studio

(1/1)

seba_500:
Hola,

Tengo (para modificar y trabajar con ellos) 2 proyectos q abro con Visual Studio 2005: uno es una librería ATL y el otro es un formulario q hace uso del primero.
Son open source con lo q ya traen mucho hecho, así como todas las propiedades del proyecto y la forma de construir la solución. Pero no tienen apenas documentación

La cosa es q quiero añadir una nueva función a la librería y he probado por el método bruto: seleccioné una de las funciones existentes, le di a buscar todas las referencias y fui añadiendo la nueva a continuación de ésta.
Sin embargo, compilo y genero solución pero cuando abro el 2º proyecto, Intellisense no muestra la nueva función y si hago uso de ella no puedo compilar porque la trata como un identificador no válido, vamos q no la reconoce.

¿A qué puede deberse? Supongo q a muchas cosas... es una cuestión demasiado abstracta :ouch: pero por ejemplo me podríais comentar, los q uséis ATL (es para generar librerías dinámicas... cosa muy de moda, no?), qué pasos seguís para crear nuevos métodos.

Gracias

seba_500:
Bueno, para ir adelantando un poco el trabajo. Decir q he visto q existen varios ficheros de cabeceras q agrupan a los métodos a modo de interfaces.

Así, los métodos q me interesan aparecen con estas instrucciones:

--- Código: Text --- ...STDMETHOD(GetAccountSize)(LONG * size);...  

Y luego se declaran dichos interfaces en el fichero .idl del proyecto ATL

--- Código: Text --- interface IOpenSIPStackCtl : IDispatch{...[id(18), helpstring("method GetAccountSize")] HRESULT GetAccountSize([out,retval] LONG * size);...  }  

Hay algún misterio o es sencillo? Con el método bruto debería valer no?
La verdad es q llevo un monton de tiempo leyendo el extensisisisimo proyecto para entenderlo y poder meterle mano pero a veces creo q hubiera sido mejor no basarme en nada ya hecho si no ir aprendiendo mientras se hace, pero claro entonces los objetivos hubieran tenido q ser mucho menos ambiciosos.

seba_500:
Bueno, me contesto yo mismo  :rolleyes:

No hay q hacer nada especial pa añadir métodos a la librería dinámica ATL con lo q debería funcionar.

Pero las dlls son muy puñeteras y como esto es un proyecto muy grande, lleno de historias y el Visual Studio es muy tontito asi q cuando no falla una cosa falla la otra.
Así q tuve q hacer:

1. Desresgistrar y registrar la ATL desde el proyecto q hace uso de ella. Para ello Tools -> ActiveX Test Control Container -> File -> Register Controls

2. Generar "manualmente" los librerias envoltorio (wrappers) del proyecto en cuestion. En mi caso sólo se generaba la q lleva el mismo nombre q el proyecto pero con extension .dll. Así q mediante AxImp.exe dándole como parámetro la mencionada librería se generan otras 2.

3. Llevarme los 3 archivos .dll a la carpeta en la q se encuentra el project q hace uso de la librería dinamica.

4. Ya sólo queda disfrutar de todos los métodos q te brinda tu flamante dll   :hola:

seba_500:
Gracias, seba.
Me ha sido de gran ayuda  :lol:  :lol:  :lol:  :lol:

Navegación

[0] Índice de Mensajes

Ir a la versión completa