Trouble shooting:

1. Problems with com_cast

:\experiment\console\main.cpp(282) : error C2440: 'type cast' : cannot convert from 'class comet::com_ptr<struct IUnknown>' to 'class ATL::CComQIPtr'

Cause: Line 857 of <atlbase.h> defines a macro called "com_cast":

#define com_cast CComQIPtr

This conflicts with the Comet com_cast class in the comet namespace. However, because ATL has used the preprocessor instead of typedef or other means (*sigh*), there is no easy way to avoid this conflict. If a comet header is defined after ATL, this macro will be automatically undefined. However, if you are seeing this error, you must be including <atlbase.h> after any Comet header files, and then trying to use Comet's com_cast class in your code.

Solutions:

1. Ensure that <atlbase.h> is included before a Comet header file. e.g.

#include <atlbase.h>
#include <comet/comet.t>

Any of the Comet header files will undefine ATL's definition of com_cast before replacing it with the Comet version.

2. Ensure that com_cast is undefined. e.g.

#include <atlbase.h>
#undef com_cast

No help here? Mail us with your problem.