RegisterServer
I have a COM object I'm trying to port to x86 CE 4.20 from ARMV4
PPC2003. My PPC2003 SDK had ATL 8.0, but my CE 4.20 SDK only has ATL
3.0.
I finally got everything to compile, but when I go to register the COM
object, I get the error:
0x80070716 "The specified resource name cannot be found in the image
file."
from CComModule::RegisterServer() in the DllRegisterServer() function
of the Dll.
In ATL 8.0, I had
class CMyModule : public CAtlDllModuleT< CMyModule >
{
public :
DECLARE_LIBID(LIBID_MyLib)
#ifndef _CE_DCOM
DECLARE_REGISTRY_APPID_RESOURCEID(IDR_MYAPI,
"{AA78BE74-4F51-49C2-9B5C-26B0AEABB40C}")
#endif
};
CMyModule _AtlModule;
extern "C" BOOL WINAPI DllMain(HANDLE hInstance,
DWORD dwReason,
LPVOID lpReserved)
{
hInstance;
return _AtlModule.DllMain(dwReason, lpReserved);
}
STDAPI DllRegisterServer(void)
{
// registers object, typelib and all interfaces in typelib
HRESULT hr = _AtlModule.DllRegisterServer();
return hr;
}
and all that worked great. But, for ATL 3.0, I've got to do something
like this:
CComModule _Module;
BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_MyInterface, CMyInterface)
END_OBJECT_MAP()
extern "C"
BOOL WINAPI DllMain(HANDLE hInstance, DWORD dwReason, LPVOID
/*lpReserved*/)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
_Module.Init(ObjectMap, (HINSTANCE)hInstance);
}
else if (dwReason == DLL_PROCESS_DETACH)
_Module.Term();
return TRUE; // ok
}
STDAPI DllRegisterServer(void)
{
// registers object, typelib and all interfaces in typelib
return _Module.RegisterServer(TRUE);
}
Can anybody tell from this where I'm going wrong?
Thanks,
PaulH