FIX: Error C2664 'AVIFileCreateStream' from Visual C++ 2.0/2.1
Article ID: 139825
Article Last Modified on 7/11/2005
APPLIES TO
- Microsoft Platform Software Development Kit-January 2000 Edition, when used with:
- Microsoft Windows NT Server 3.5
- Microsoft Windows NT Server 3.51
- Microsoft Windows NT Server 4.0 Standard Edition
- Microsoft Windows NT Workstation 3.5
- Microsoft Windows NT Workstation 3.51
- Microsoft Windows NT Workstation 4.0 Developer Edition
- Microsoft Windows 2000 Standard Edition
- Microsoft Visual C++ 2.0 Professional Edition
- Microsoft Visual C++ 2.1
This article was previously published under Q139825
SYMPTOMS
The following error is generated when you compile an application under
Visual C++ version 2.0 or 2.1 that calls AVIFileCreateStream() and does not
use UNICODE:
error C2664: 'AVIFileCreateStream' : cannot convert parameter 3 from
'struct _AVISTREAMINFOA*' to 'struct _AVISTREAMINFOW*'
CAUSE
The Vfw.h header file from Visual C++ version 2.0 or 2.1 has the following
declaration for the AVIFileCreateStream() function:
STDAPI AVIFileCreateStream(PAVIFILE pfile,
PAVISTREAM FAR *ppavi,
AVISTREAMINFOW FAR *psi);
Note the wide version of the structure in the third parameter:
AVISTREAMINFOW. There is no ANSI declaration for this function in vfw.h.
The header file is incorrect. It should list an ANSI version of the
function that takes an ANSI AVISTREAMINFO in addition to the UNICODE
version.
STATUS
Microsoft has confirmed this to be a bug in Visual C++ versions 2.0 and
2.1. This bug was corrected in Visual C++ version 2.2. The Vfw.h header
file from that product declares an AVIFileCreateStreamA() function in
addition to the W variety, AVIFileCreateStreamW().
Additional query words: 3.50 2.10 2.00 4.00 Windows 95
Keywords: kbfix kbmm KB139825