我正在尝试在进程内 COM 服务器 DLL(IE BHO)中使用 WTL,但我正在努力使用 _Module。
我的 DLL 需求CMyModule
来自CAtlDllModuleT<>
:
class CMyModule : public CAtlDllModuleT< CMyModule >
{
public:
DECLARE_LIBID(LIBID_MyLib)
DECLARE_REGISTRY_APPID_RESOURCEID(IDR_MYPROJ, "{...}")
};
CMyModule _Module;
extern "C" BOOL WINAPI DllMain(...)
{
hInstance;
return _Module.DllMain(dwReason, lpReserved);
}
...
STDAPI DllUnregisterServer(void)
{
return _Module.DllUnregisterServer();
}
但这与大多数 WTL 示例相冲突,后者需要以下内容stdafx.h
:
extern CAppModule _Module; // WTL version of CComModule
无论我采用哪种方式,我(不出所料)都会遇到编译错误。CMyModule
源自CAppModule
borks on_Module.DllUnregisterServer()
等。CMyModule
源自CAtlDllModuleT<>
borks on 代码,例如_Module.GetMessageLoop()
.
关于 WTL 应该如何在 DLL 中工作的任何好的参考资料?谷歌发现很多问题,但答案很少。