BUG: Handler Function Prototypes Incorrect for C++Last reviewed: April 28, 1997Article ID: Q104715  | 
	
	
The information in this article applies to:
 
 SYMPTOMSAttempting 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 )'
CAUSEThe DBNTWIN32 section of the SQLDB.H header file declares the dberrhandle and dbmsghandle functions improperly for C++. 
 WORKAROUNDIn 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); STATUSMicrosoft 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 
 © 1998 Microsoft Corporation. All rights reserved. Terms of Use.  |