|
|
|
|
|
#include "CDllCoreCtrl.h"
|
|
|
|
|
|
#include "QMainFilter.h"
|
|
|
|
|
|
|
|
|
|
|
|
#define _USE_LIB_CORECTRL_DLL
|
|
|
|
|
|
#ifdef _USE_LIB_CORECTRL_DLL
|
|
|
|
|
|
#include "DllLoader.h"
|
|
|
|
|
|
#else
|
|
|
|
|
|
extern "C" void* Lib_CoreCtrl_Init(void* inParam);
|
|
|
|
|
|
extern "C" void Lib_CoreCtrl_Free();
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
CDllCoreCtrl::CDllCoreCtrl(const ZStringList& szDllPaths, IGuiCallback* pCb, class IDetectorEngine* pDE /*= NULL*/)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_szDllPaths = szDllPaths;
|
|
|
|
|
|
memset(&m_tpGlobal, 0, sizeof(m_tpGlobal));
|
|
|
|
|
|
m_tpGlobal.tgdpDllPaths = &m_szDllPaths;
|
|
|
|
|
|
if (m_szDllPaths.size() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
strncpy(m_tpGlobal.tgdMainPath, m_szDllPaths.last().toUtf8().data(), BASE_MAX_FILE_PATH - 1);
|
|
|
|
|
|
strncpy(m_tpGlobal.tgdUserPath, m_szDllPaths.first().toUtf8().data(), BASE_MAX_FILE_PATH - 1);
|
|
|
|
|
|
strcpy(m_tpGlobal.tgdDllPath, m_tpGlobal.tgdMainPath);
|
|
|
|
|
|
}
|
|
|
|
|
|
QJsonObject jsonUser = gpCallback->IJsonUser();
|
|
|
|
|
|
QString folderStr = jsonUser.value("config").toString("config\\");
|
|
|
|
|
|
strcpy(m_tpGlobal.tgdFolderNames[TP_FOLDER_NAME_CONFIG], folderStr.toUtf8().data());
|
|
|
|
|
|
folderStr = jsonUser.value("pic").toString("pic\\");
|
|
|
|
|
|
strcpy(m_tpGlobal.tgdFolderNames[TP_FOLDER_NAME_PICTURE], folderStr.toUtf8().data());
|
|
|
|
|
|
strcpy(m_tpGlobal.tgdFolderNames[TP_FOLDER_NAME_UI], "ui\\");
|
|
|
|
|
|
CORE_CTRL_IN_PARAM inParam;
|
|
|
|
|
|
inParam.pGuiCb = pCb;
|
|
|
|
|
|
inParam.pGlobalData = &m_tpGlobal;
|
|
|
|
|
|
inParam.pCoreSetting = NULL;
|
|
|
|
|
|
#ifdef _USE_LIB_CORECTRL_DLL
|
|
|
|
|
|
m_pLibCoreCtrl = new CDllLoaderM("tpCoreCtrl", "Lib_CoreCtrl_Init", "Lib_CoreCtrl_Free", m_szDllPaths);
|
|
|
|
|
|
if (NULL != m_pLibCoreCtrl)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pCoreCtrl = (ICoreCtrl*)m_pLibCoreCtrl->ModuleInit(&inParam);
|
|
|
|
|
|
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(&inParam);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CDllCoreCtrl::~CDllCoreCtrl()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (NULL != m_pCoreCtrl)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pCoreCtrl->IFreeCore();
|
|
|
|
|
|
#ifdef _USE_LIB_CORECTRL_DLL
|
|
|
|
|
|
if (NULL != m_pLibCoreCtrl)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pLibCoreCtrl->ModuleFree();
|
|
|
|
|
|
}
|
|
|
|
|
|
#else
|
|
|
|
|
|
Lib_CoreCtrl_Free();
|
|
|
|
|
|
#endif
|
|
|
|
|
|
m_pCoreCtrl = NULL;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (NULL != m_pLibCoreCtrl)
|
|
|
|
|
|
{
|
|
|
|
|
|
delete m_pLibCoreCtrl;
|
|
|
|
|
|
m_pLibCoreCtrl = NULL;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|