|MinGW doesn't support ATL. ATL is a C++ Microsoft proprietary library.|
You might use the COM C interface in MinGW for it's client. As far
as I know MinGW doesn't have any C++ COM smart pointers implemented.
You can use boost (or std::tr1) shared_ptr to have a C++ smart pointer
You might want to try Comet (http://www.lambdasoft.dk/comet/)
"Comet is language binding between COM and C++. It allows you to do both
COM client and COM server programming, without any dependency on either
ATL or MFC. In other words Comet is a replacement for ATL."
Another promising project is VOLE (http://vole.sourceforge.net/)
"VOLE is an open-source C++ library that dramatically simplifies the
business of driving COM servers (via the IDispatch interface) from C++."
The latter is actively more maintained.