Microsoft KB Archive/104715

From BetaArchive Wiki

BUG: Handler Function Prototypes Incorrect for C++

Q104715



The information in this article applies to:


  • Microsoft SQL Server Programmer's Toolkit, version 4.2



BUG# 9383 (4.2.5)


SYMPTOMS

Attempting to compile a C++ DB-Library application for Microsoft Windows NT generates the following compiler errors when either the Win32 SDK or Visual C++ for Windows NT is used:


error C2664: 'dberrhandle' : cannot convert parameter 1 from
'int (void *,int ,int ,int ,char *,char *)' to
'int (__cdecl *)(void )'
error C2664: 'dbmsghandle' : cannot convert parameter 1 from
'int (void *,long ,int ,int ,char *)' to
'int (__cdecl *)(void )'



CAUSE

The DBNTWIN32 section of the SQLDB.H header file declares the dberrhandle and dbmsghandle functions improperly for C++.



WORKAROUND

In the DBNTWIN32 section of SQLDB.H, change the following line (line 628 in the SQLDB.H file dated 8/24/93) from:


   typedef  int (SQLAPI *SQLFARPROC)(); 


to the following:


   typedef int (SQLAPI *SQLERRPROC)(DBPROCESS *,INT,INT,INT,CHAR *,CHAR *);
   typedef int (SQLAPI *SQLMSGPROC)(DBPROCESS *,DBINT,INT,INT,CHAR *); 


Also in the DBNTWIN32 section of SQLDB.H, change the following lines (lines 633 and 634 in the SQLDB.H file dated 8/24/93) from:


   SQLAPI dberrhandle(SQLFARPROC);
   SQLAPI dbmsghandle(SQLFARPROC); 


to the following:


   SQLAPI dberrhandle(SQLERRPROC);
   SQLAPI dbmsghandle(SQLMSGPROC); 



STATUS

Microsoft has confirmed this to be a problem in DB-Library version 4.20.50. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

Additional query words: dblib

Keywords : kbprogramming
Issue type :
Technology : kbSQLServSearch kbAudDeveloper kbSQLServPTK420


Last Reviewed: March 18, 1999
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.