FIX: Visual C++ 5.0 #import Causes Errors with ADO Version 2.0

ID: Q190726


The information in this article applies to:
  • Microsoft Visual C++, 32-bit Editions, version 5.0
  • ActiveX Data Objects (ADO), version 2.0


SYMPTOMS

On a clean Windows 95 or Windows 98 machine with DCOM95 or DCOM98 installed, compile the following in a .cpp file:


#import "c:\program files\common files\system\ado\msado15.dll" 
RESULT: You get the following error messages:

   error C2504: '_Connection15' : base class undefined 

   error C2504: '_Recordset15' : base class undefined 

   error C2504: 'Fields15' : base class undefined 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Connection *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::_Recordset *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::Fields *const ' to 'struct IUnknown *' 

   error C2664: '_com_issue_errorex' : cannot convert parameter 2 from
                'struct ADODB::Fields *const ' to 'struct IUnknown *' 
NOTE: This problem also occurs on Windows NT 4.0, and the resolution given applies.


CAUSE

This is a problem in the #import feature of the compiler.


RESOLUTION

To work around this problem, use one of the following alternatives:

  • Install Visual Studio 97, Service Pack 3.


  • Upgrade to Visual C++, version 6.0.


  • Modify the resultant .tlh file by moving each of the declarations for
    _Connection15, _Recordset15, and Field15
    ahead of each of the declarations for
    Connection, Recordset, and Field.



STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. The problem has been corrected in Visual Studio 97, Service Pack 3, and also in Visual C++ version 6.0.


REFERENCES

For additional information about how to obtain Visual Studio 97, Service Pack 3, please see the following article in the Microsoft Knowledge Base:

Q170365 Visual Studio 97 Service Packs - What, Where, and Why

Keywords : kberrmsg kbADO200 kbVC500bug kbVC600fix
Version : WINDOWS:2.0; winnt:5.0
Platform : WINDOWS winnt
Issue type : kbbug


Last Reviewed: July 16, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.