23,215
社区成员




int CComponentPool::RemoveComponent(char *id)
{
vector<CMTComponent *>::iterator ci;
for ( ci = m_Components.begin() ; ci != m_Components.end() ; ci++ )
{
if ((*ci)->m_ID == id)
{
(*ci)->Stop();
m_MapComponents.erase(((CMTComponent *)(*ci))->m_Type);
FreeComponent *hFreeComp = (FreeComponent *)COsLibrary::GetProcAddr(m_MapComponents[((CMTComponent *)(*ci))->m_Type], FCFN);
hFreeComp(&((CMTComponent *)(*ci)));
m_Components.erase(ci);
break;
}
}
return 0;
}
#ifdef WIN32
extern "C" __declspec(dllexport) void FreeComponent(CMTComponent** pComponent)
#elif defined(LINUX)
extern "C" void FreeComponent(CMTComponent** pComponent)
#endif
{
SAFE_DELETE( *pComponent);
}
FuncAddr COsLibrary::GetProcAddr(LibHandle hModule, char *lpProcName)
{
return dlsym(hModule, lpProcName);
}
std::map <int, LibHandle> m_MapComponents;