Help and Support

Article ID: 158905 - Last Review: October 11, 2006 - Revision: 1.2

XL97: "Bad DLL Calling Convention" When Running a Macro

This article was previously published under Q158905
Expand all | Collapse all

SYMPTOMS

When you run a Visual Basic for Applications macro in Microsoft Excel 97, you may receive the following error message:
Run-time error '49':
Bad DLL calling convention

CAUSE

This problem may occur when all of the following conditions are true:

  • The Visual Basic macro code contains one or more Declare Function statements.

    -and-
  • One of the Declare Function statements refers to a function in a dynamic-link library file (DLL) that uses the _cdecl calling convention.

    -and-
  • Within the code, you make a call to the declared function.
In Microsoft Excel 97, Visual Basic macros can only call functions that use the _stdcall calling convention. Functions that use the _cdecl calling convention are not supported.

MORE INFORMATION

DLLs in Microsoft Windows support two main calling conventions: _cdecl and _stdcall. Most 32-bit DLLs that are included with Microsoft Windows 95 and Microsoft Windows NT support the _stdcall calling convention; the _cdecl calling convention is generally used by older DLLs.

If a DLL supports only the _cdecl calling convention, you cannot call functions in that DLL from a Visual Basic macro in Microsoft Excel 97. For example, if your code includes the following function declaration:
   Declare Function memcpy& Lib "Crtdll" (ByRef Dest&, ByVal Src&, _
       ByVal Count&)
				
and then attempts to call the memcpy& function, you will receive the error message described in this article. This behavior occurs because macros in Microsoft Excel 97 cannot call functions that use the _cdecl calling convention.

NOTE: In earlier versions of Microsoft Excel, you can make calls to functions that use the _cdecl calling convention.

APPLIES TO
  • Microsoft Excel 97 Standard Edition
Keywords: 
kberrmsg kbprb KB158905
Retired KB ArticleRetired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.

Article Translations