本文整理汇总了C++中LibraryLoader::DecrRef方法的典型用法代码示例。如果您正苦于以下问题:C++ LibraryLoader::DecrRef方法的具体用法?C++ LibraryLoader::DecrRef怎么用?C++ LibraryLoader::DecrRef使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LibraryLoader
的用法示例。
在下文中一共展示了LibraryLoader::DecrRef方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UnloadPythonDlls
void DllLoaderContainer::UnloadPythonDlls()
{
// unload all dlls that python24.dll could have loaded
for (int i = 0; m_dlls[i] != NULL && i < m_iNrOfDlls; i++)
{
char* name = m_dlls[i]->GetName();
if (strstr(name, ".pyd") != NULL)
{
LibraryLoader* pDll = m_dlls[i];
ReleaseModule(pDll);
i = 0;
}
}
// last dll to unload, python24.dll
for (int i = 0; m_dlls[i] != NULL && i < m_iNrOfDlls; i++)
{
char* name = m_dlls[i]->GetName();
#ifdef HAVE_LIBPYTHON2_6
if (strstr(name, "python26.dll") != NULL)
#else
if (strstr(name, "python24.dll") != NULL)
#endif
{
LibraryLoader* pDll = m_dlls[i];
pDll->IncrRef();
while (pDll->DecrRef() > 1) pDll->DecrRef();
// since we freed all python extension dlls first, we have to remove any associations with them first
DllTrackInfo* info = tracker_get_dlltrackinfo_byobject((DllLoader*) pDll);
if (info != NULL)
{
info->dllList.clear();
}
ReleaseModule(pDll);
break;
}
}
}