28 diciembre, 2009

Error al importar librería msado15.dll de ADO

Al programar en Visual C++ 5.0 para un sistema de gestión de bases de datos (database management system, DBMS) relacional pensado para pequeñas aplicaciones de Windows como Microsoft Access 2000, utilizando la interfaz orientada a objetos, ActiveX Data Objects (ADO) para el acceso a la base de datos. Nos encontramos con que tenemos que importar en el fichero de cabecera (.h) correspondiente mediante la directiva # import la dll msado15.dll, pues bien, después de ponernos a tirar código resulta que al compilar nos encontramos con los siguientes errores :
  • ..\Debug\msado15.tlh(403) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
  • ..\Debug\msado15.tlh(1098) : error C2504: 'Connection15' : base class undefined
  • ..\Debug\msado15.tlh(1266) : error C2504: 'Recordset21' : base class undefined
  • ..\Debug\msado15.tlh(1286) : error C2504: 'Recordset20' : base class undefined
  • ..\Debug\msado15.tlh(1320) : error C2504: 'Recordset15' : base class undefined
  • ..\Debug\msado15.tlh(1706) : error C2504: 'Fields20' : base class undefined
  • ..\Debug\msado15.tlh(1740) : error C2504: 'Fields15' : base class undefined
  • ..\Debug\msado15.tlh(1794) : error C2504: 'Field20' : base class undefined
  • ..\Debug/msado15.tli(293) : error C2664: '_com_issue_errorex' : cannot convert parameter 2 from 'struct _Connection *const ' to 'struct IUnknown *'
  • ..\Debug/msado15.tli(481) : error C2664: '_com_issue_errorex' : cannot convert parameter 2 from 'struct _Recordset *const ' to 'struct IUnknown *'
  • ..\Debug/msado15.tli(491) : error C2664: '_com_issue_errorex' : cannot convert parameter 2 from 'struct Recordset21 *const ' to 'struct IUnknown *'
  • etc.
El error está perfectamente documentado en una revisión disponible en el sitio de soporte de Microsoft. El identificador del artículo es 190726 - Última revisión: martes, 18 de noviembre de 2003 - Versión: 2.0 y el título de la revisión: #Import de Visual C++ 5.0 produce errores con ADO versión 2.0 donde se comenta que se produce en los windows 95, 98 y NT, lista a la que añadimos también el 2000. De entre las alternativas ofrecidas, la mejor es sin lugar a dudas la primera, es decir, instalar Visual Studio, Service Pack 3 porque todo se debe a un antiguo problema de la característica #import del compilador que se corrigió en la versión full del correspondiente service pack 3. La obtención de este service pack puede hacerse de varias maneras, siendo la más cómoda acceder al centro de descargas de Microsoft o hacer un ftp a Microsoft, para lo que aconsejo el sitio FileWatcher y bajarse el vssp3 versión full que consta de nueve ficheros (de unos 10 MB cada uno) :
  1. VSSP3_1.EXE
  2. VSSP3_2.CAB
  3. VSSP3_3.CAB
  4. VSSP3_4.CAB
  5. VSSP3_5.CAB
  6. VSSP3_6.CAB
  7. VSSP3_7.CAB
  8. VSSP3_8.CAB
  9. VSSP3_9.CAB
Lo primero una vez hecha la descarga es expandir el service pack ejecutando VSSP3_1.EXE, preferiblemente desde un prompt MS-DOS. Esto creará el directorio vs97_sp3 y ya podremos ejecutar el SETUP.EXE para instalar el service pack que soluciona nuestro problema.

Infolinks In Text Ads