You are currently offline, waiting for your internet to reconnect

Unregistering an ATL DLL or .exe file that was built with a version of Visual C++ prior to Visual C++ 6.0 might result in an access violation

This article was previously published under Q194180
Unregistering an ATL DLL or .exe file that was built with a version ofMicrosfot Visual C++ prior to Microsoft Visual C++ 6.0 might result in an access violation when Atl.dll(version 3.00.8168) that ships with Visual C++6.0 is installed on thecomputer.

Running "REGSVR32.EXE /U" to unregister an ATL DLL might display thefollowing error message:
DllUnregisterServer in <component.dll> failed. Return code was:0xc0000005
Running an ATL .exe file with the "/Unregserver" switch may display adialog box titled "OleMainThreadWndName: <server.exe> - ApplicationError", with the following error message:
The instruction at 0x00000000 referenced memory at 0x00000000. Thememory could not be read.
The ATL server has to be of build type Release MinSize or Unicode ReleaseMinSize.
In the version of Atl.dll that comes with Visual C++ 6.0, the_ATL_OBJMAP_ENTRY structure has an additional member called"pfnGetCategoryMap". During unregistration, AtlModuleUnregisterServerEx()tries to access this member, which does not exist for ATL servers builtprior to Visual C++ 6.0, and the access violation occurs.
To work around this problem, use one of the following options:
  • Rebuild your server with Release MinDependency. This statically links in all the code that was in Atl.dll, so your server isn't dependent on it. Even for a 'Release MinDependency' atl.dll may need to be shipped.For more information about this, click the following article number to view the article in the Microsoft Knowledge Base:
    244955 ATL projects built for MinDependency need Atl.dll if the projects use ATL control containment code in Visual C++ 6.0
  • Rebuild your server with Visual C++ 6.0.
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.
This bug was corrected in Visual Studio 6.0 Service Pack 3.
For more informationabout Visual Studio service packs, click the following article numbers to view the articles in the Microsoft Knowledge Base:
194022 Visual Studio 6.0 service packs, what, where, why
194295 How to determine whether Visual Studio Service Pack is installed

Article ID: 194180 - Last Review: 09/02/2005 23:31:00 - Revision: 4.0

  • Microsoft ActiveX Template Library 3.0
  • kberrmsg kbbug kbfix kbregistry kbfaq kbvs600sp3fix KB194180