2
我想在我的COM服务器的入口点的cpp中有一个静态全局std :: unordered_map。全局std :: unordered_map com服务器初始化问题
相关头代码:
typedef unordered_map<HWND,IMyInterface*> MyMapType;
相关机构:
static MyMapType MyMap;
void MyFunction(HWND hWnd, IMyInterface* pObj){
MyMap[hWnd] = pObj;
}
HINSTANCE g_hInstModule = NULL;
BOOL WINAPI DllMain (__in HINSTANCE hInstDLL, __in DWORD fdwReason, __in LPVOID lpvReserved)
{
if(fdwReason == DLL_PROCESS_ATTACH)
{
g_hInstModule = hInstDLL;
return true;
}
else if(fdwReason == DLL_PROCESS_DETACH)
{
return true;
}
return false;
}
MyCoClass::MyCoClass()
{
DRM_Refcount = 1;
}
HRESULT STDMETHODCALLTYPE MyCoClass::InitMyCoClass()
{
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
//replace with make window code
MyFunction(hWnd,ISomeInterface);
return S_OK;
}
的唯一办法,我能得到这个工作是要做出map_type指针,在堆上创建map_type的一个实例,用全局指针指向它。 :/
为什么?
您的“相关标题代码”不能正确。 'unordered_map'是一个模板。 “我能做到这一点的唯一方法是......”如果你修正了typedef,你用代码写的代码会产生什么错误? – 2010-06-05 22:44:52
嗯,我不知道如何解决格式化*模板* HWND,IMyInterface * end_template *(因为它在那里它只是没有显示在帖子上):/和我得到没有错误,因为它上面编译然后运行,然后在尝试访问地图时出现一些疯狂现象。 – 2010-06-05 22:52:05
Ahhh;我已经修复了你的格式。缩进四行空格会导致它们被渲染为代码;不需要预先或代码标签。 – 2010-06-05 22:56:08