You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.4 KiB
C++

5 years ago
#include "CDllCoreCtrl.h"
#define _USE_LIB_CORECTRL_DLL
#ifdef _USE_LIB_CORECTRL_DLL
#include "DllLoader.h"
#else
extern "C" ICoreCtrl* Lib_CoreCtrl_Init();
extern "C" void Lib_CoreCtrl_Free(ICoreCtrl*);
#endif
#include "QZkJsonParser.h"
CDllCoreCtrl::CDllCoreCtrl(const ZStringList& szDllPaths,class IDetectorEngine* pDE /*= NULL*/)
{
m_szDllPaths = szDllPaths;
#ifdef _USE_LIB_CORECTRL_DLL
m_pLibCoreCtrl = new CDllLoaderM("lpCoreCtrl", "Lib_CoreCtrl_Init", "Lib_CoreCtrl_Free", m_szDllPaths);
if (NULL != m_pLibCoreCtrl)
{
m_pCoreCtrl = (ICoreCtrl*)m_pLibCoreCtrl->ModuleInit(nullptr);
if (NULL != m_pCoreCtrl)
{
m_pCoreCtrl->IInitCore(pDE);
}
else
{
tpDebugOut("failed to get instance from tpCoreCtrl.dll");
}
}
else
{
tpDebugOut("failed to load tpCoreCtrl.dll");
}
#else
m_pLibCoreCtrl = NULL;
m_pCoreCtrl = (ICoreCtrl*)Lib_CoreCtrl_Init();
#endif
}
CDllCoreCtrl::~CDllCoreCtrl()
{
if (NULL != m_pCoreCtrl)
{
#ifdef _USE_LIB_CORECTRL_DLL
m_pCoreCtrl->IFreeCore();
delete m_pCoreCtrl;
// if (NULL != m_pLibCoreCtrl)
// {
// m_pLibCoreCtrl->ModuleFree();
// }
#else
Lib_CoreCtrl_Free(m_pCoreCtrl);
#endif
m_pCoreCtrl = NULL;
}
if (NULL != m_pLibCoreCtrl)
{
delete m_pLibCoreCtrl;
m_pLibCoreCtrl = NULL;
}
}