CMatlabDlg3::CMatlabDlg3(const CString dllFileName, const CString funcName) : m_DllFileName(dllFileName) , m_FuncName(funcName) , m_DllHandle(0) , m_MatlabFunc(0) , m_PlaneTrueInput(NULL) , m_TargetTrueInput(NULL) , m_TargetFusionInput(NULL) , m_TargetFilterInput(NULL) , m_GlobalVarInput(NULL) , m_Size(50) , m_IsShowing(false) { m_DllHandle = LoadLibrary(m_DllFileName); if (!m_DllHandle) { CString msg; msg.AppendFormat(TEXT("无法装载模块%s."), m_DllFileName); AfxMessageBox(msg); } bool result = false; wstring wsFuncName(m_FuncName); string sFuncName(wsFuncName.begin(), wsFuncName.end()); string initializeFuncName = sFuncName; initializeFuncName += InitializeFuncPrefix; InitializeFunc initializeFunc = (InitializeFunc)GetProcAddress( (HMODULE)m_DllHandle, initializeFuncName.c_str()); if (!initializeFunc) { CString msg; msg.AppendFormat(TEXT("无法初始化模块%s."), m_DllFileName); AfxMessageBox(msg); } result = initializeFunc(); if (!result) { CString msg; msg.AppendFormat(TEXT("初始化模块%s错误."), m_DllFileName); AfxMessageBox(msg); } string fullFuncName = sFuncName; fullFuncName[0] = toupper(fullFuncName[0]); fullFuncName = FuncPrefix + fullFuncName; m_MatlabFunc = (RealFunc)GetProcAddress( m_DllHandle, fullFuncName.c_str()); if (!m_MatlabFunc) { CString msg; msg.AppendFormat(TEXT("无法找到入口函数%s."), m_FuncName); AfxMessageBox(msg); } }
bool FusionMatlabAlgo::Init() { m_DllHandle = LoadLibrary(m_DllFileName); if (!m_DllHandle) { CString msg; msg.AppendFormat(TEXT("无法装载模块%s."), m_DllFileName); return false; } bool result = false; wstring wsFuncName(m_FuncName); string sFuncName(wsFuncName.begin(), wsFuncName.end()); string initializeFuncName = sFuncName; initializeFuncName += InitializeFuncPrefix; InitializeFunc initializeFunc = (InitializeFunc)GetProcAddress( (HMODULE)m_DllHandle, initializeFuncName.c_str()); if (!initializeFunc) { return false; } result = initializeFunc(); if (!result) { return false; } string fullFuncName = sFuncName; fullFuncName[0] = toupper(fullFuncName[0]); fullFuncName = FuncPrefix + fullFuncName; m_MatlabFunc = (RealFunc)GetProcAddress( m_DllHandle, fullFuncName.c_str()); if (!m_MatlabFunc) { return false; } return true; }