Hawk » 03 ноя 2005, 11:44
Попробуй найти, где у тебя дефайнится REGISTER_PROXY_DLL (в проекте, в StdAfx.h или ещё где-нить) и убери этот дафайн. После этого тебе надо самому писать DllMain, DllRegisterServer и DllUnegisterServer.
В обычном ATL проекте это выглядит так -
Код: Выделить всё
extern "C"
BOOL WINAPI DllMain(HANDLE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
_Module.Init(ObjectMap, (HINSTANCE)hInstance);
#ifndef UNDER_CE
DisableThreadLibraryCalls((HINSTANCE)hInstance);
#endif
}
else if (dwReason == DLL_PROCESS_DETACH)
_Module.Term();
return TRUE; // ok
}
/////////////////////////////////////////////////////////////////////////////
// Returns a class factory to create an object of the requested type
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
return _Module.GetClassObject(rclsid, riid, ppv);
}
/////////////////////////////////////////////////////////////////////////////
// DllRegisterServer - Adds entries to the system registry
STDAPI DllRegisterServer(void)
{
// registers object, typelib and all interfaces in typelib
return _Module.RegisterServer(TRUE);
}
Попробуй найти, где у тебя дефайнится REGISTER_PROXY_DLL (в проекте, в StdAfx.h или ещё где-нить) и убери этот дафайн. После этого тебе надо самому писать DllMain, DllRegisterServer и DllUnegisterServer.
В обычном ATL проекте это выглядит так -
[code]
extern "C"
BOOL WINAPI DllMain(HANDLE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
_Module.Init(ObjectMap, (HINSTANCE)hInstance);
#ifndef UNDER_CE
DisableThreadLibraryCalls((HINSTANCE)hInstance);
#endif
}
else if (dwReason == DLL_PROCESS_DETACH)
_Module.Term();
return TRUE; // ok
}
/////////////////////////////////////////////////////////////////////////////
// Returns a class factory to create an object of the requested type
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
return _Module.GetClassObject(rclsid, riid, ppv);
}
/////////////////////////////////////////////////////////////////////////////
// DllRegisterServer - Adds entries to the system registry
STDAPI DllRegisterServer(void)
{
// registers object, typelib and all interfaces in typelib
return _Module.RegisterServer(TRUE);
}
[/code]