PRB: "QueryInterface:function does not take 1 parameters" Error

This article was previously published under Q194862
This article has been archived. It is offered "as is" and will no longer be updated.
When you build an ATL project, you may get the following compiler error:
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(3331) : error C2660: 'QueryInterface' : function does not take 1 parameters
In Visual C++ 6.0, a templated version of QueryInterface(), which takes one parameter (instead of the usual two), was added to IUnknown. In ATL 3.0, CComTypeInfoHolder::GetTI() uses this templated version of QueryInterface(). If you have an older version of Unknwn.h in your Include path, you get this compiler error. For example, having the Platform SDK Include directory in front of the \VC98\Include directory causes this problem.
Replace the Unknwn.h in the other Include directory with the one from the Visual C++ 6.0 Include directory.
This behavior is by design.
(c) Microsoft Corporation 1998, All Rights Reserved. Contributions by Samson Tanrena, Microsoft Corporation.


Article ID: 194862 - Last Review: 02/21/2014 00:30:34 - Revision: 3.0

  • Microsoft ActiveX Template Library 3.0
  • kbnosurvey kbarchive kberrmsg kbtemplate kbprb kbfaq KB194862