A Day in the Life

A day in my life. Thoughts on leadership, management, startups, technology, software, concurrent development, etc... Basically the stuff I think about from 10am to 6pm.


What the 0x800700c1 is going on?

I ran into an interesting problem yesterday while trying to get my C++/COM server sample working. I was getting this error message from the Digipede Network:

FailureInstantiatingComWrapper - Failure instantiating COM wrapper: Retrieving the COM class factory for component with CLSID {3D26EA71-F824-4651-B15C-EBDEA183D978} failed due to the following error: 800700c1.

The interesting part of the message is the 0x800700c1. I was unable to find this error code documented clearly....anywhere. I searched the libraries, MSDN, development groups, and the web. There are references to the error code but in no way was my problem related to the Microsoft Media Player. I eventually stumbled upon a newsgroup post which led me to set up a 32-bit pool removing the 64-bit machine from the equation. That did the trick.

Here’s what’s going on in a nut shell:

In the 64-bit Applications documentation on MSDN there is this text:

An application built using .NET Framework 2.0 (on a 32-bit or 64-bit machine) by default will run as a native application (not under WOW64) on a 64-bit machine.

The Digipede Agent running on the 64-bit test machine is running natively – as a 64-bit application. The COM server component that I had distributed to the machine was compiled as 32-bit.

More reading:

Running 32-bit Applications

Further research into WOW64 may yield a way to make this all work without any code changes from anyone; unlike the 16-bit to 32-bit transition when we had to write our own thunking layers. But for now I'm not running my 32-bit COM servers on the 64-bit machine.


At May 02, 2007 3:47 PM, Blogger Max said...

Thank you very much, Ms. Greene. You've saved me so much trouble. I am crying like a baby right now.

At May 02, 2007 3:48 PM, Blogger Max said...

Make that "Greenlee", not Greene. My bad.

At July 07, 2008 4:05 AM, Blogger Maulik said...

Hi Greenle,

I am facing similar error.
can u plz help me out?

I have a 3rd party COM DLL.
I have created Interop of it and added a reference in .Net 3.5, its working fine on 32 bit machine.

When I installed the DLL, Created Interop on the 64 bit machine and placed it in the bin folder of the Installed asp.net Application.

I am getting error
"Retrieving the COM class factory for component with CLSID {48E1B911-...} failed due to the following error: 800700c1."

Using .net 3.5, Server 2008 64 bit.

At April 22, 2009 10:20 PM, Anonymous Anonymous said...

I'm thinking that I'm having the same issue. I'm a little confused on what the fix actually was. I change my platform to run under x86 instead of Any CPU but that didn't seem to do the trick like I thought it would. Any help would be appreciated.

At April 23, 2009 9:35 AM, Blogger Kim Greenlee said...

The "fix" was the realization that I was trying to run a 32bit COM object from a 64bit application. And that wasn't going to fly. I can't remember much of the details because it was awhile a go. Digipded is a grid computing solution built on .NET. We allow the developer to distribute an object onto another machine for execution. The problem occurred when the .NET object and dependencies were created on a 32bit machine and distributed to a 64bit machine. The COM object wasn't happy and put that error out.


Post a Comment

Links to this post:

Create a Link

<< Home