Microsoft KB Archive/169433

From BetaArchive Wiki
< Microsoft KB Archive
Revision as of 10:04, 21 July 2020 by X010 (talk | contribs) (Text replacement - """ to """)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Base


Article ID: 169433

Article Last Modified on 7/18/2001



APPLIES TO

  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition



This article was previously published under Q169433

SYMPTOMS

When using the #import compiler directive to import Shdocvw.dll, several errors similar to the following will be reported:

error C2556: 'GetReadyState' : overloaded functions
only differ by return type

error C2371: 'GetReadyState' : redefinition;
different basic types

error C2664: 'get_ReadyState' : cannot convert
parameter 1 from 'enum SHDocVw::tagREADYSTATE *' to 'enum tagREADYSTATE *'

When using the #import compiler directive with the no_namespace attribute to import Shdocvw.dll, several errors similar to the following will be reported:

error C2011: 'tagREADYSTATE' :
'enum' type redefinition

error C2871: 'SHDocVw' : does not
exist or is not a namespace

CAUSE

These errors are generated because of the inclusion of the tagReadyState definition in Ocidl.idl (included by the .idl for shdocvw).

Including tagReadyState in Ocidl.idl causes tagReadyState to be included in the type library for Shdocvw.dll. In turn, #import "shdocvw.dll" includes the definition of tagReadyState in the generated headers for Shdocvw.dll. This definition collides with the definition of tagReadyState in Ocidl.h.

RESOLUTION

The exclude attribute of the #import directive can be used to work around this problem. Use #import shdocvw.dll as follows:

#import <shdocvw.dll> exclude("tagREADYSTATE")
                

The tagReadyState will be defined for your project through the inclusion of Ocidl.h.

STATUS

This behavior is by design.

REFERENCES

Visual C++ Preprocessor Reference: The #import directive

Keywords: kberrmsg kbwebbrowser kbprb kbfaq KB169433