SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: seba_500 en Viernes 28 de Diciembre de 2007, 00:12

Título: Proyecto Atl En Visual Studio
Publicado por: seba_500 en Viernes 28 de Diciembre de 2007, 00:12
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
Título: Re: Proyecto Atl En Visual Studio
Publicado por: seba_500 en Viernes 28 de Diciembre de 2007, 00:26
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
  1.  
  2. ...
  3. STDMETHOD(GetAccountSize)(LONG * size);
  4. ...
  5.  
  6.  


Y luego se declaran dichos interfaces en el fichero .idl del proyecto ATL
Código: Text
  1.  
  2. interface IOpenSIPStackCtl : IDispatch{
  3. ...
  4. [id(18), helpstring("method GetAccountSize")] HRESULT GetAccountSize([out,retval] LONG * size);
  5. ...  }
  6.  
  7.  


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.
Título: Re: Proyecto Atl En Visual Studio
Publicado por: seba_500 en Jueves 10 de Enero de 2008, 14:41
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:
Título: Re: Proyecto Atl En Visual Studio
Publicado por: seba_500 en Jueves 10 de Enero de 2008, 14:45
Gracias, seba.
Me ha sido de gran ayuda  :lol:  :lol:  :lol:  :lol: