604
社区成员




HINSTANCE Hdl;
newp_funpath = ExtractFilePath(Application->ExeName) + "Reload.dll";
// 定义函数原型
Hdl = ::LoadLibrary(newp_funpath.c_str()); // 载入DLL
if (Hdl != NULL) {
log_reason = (AnsiString __stdcall(*)(AnsiString,
AnsiString))::GetProcAddress(Hdl, "logreason");
// 获取函数入口地址
if (log_reason != NULL) {
newp_reason = log_reason(newp_dev_ip, newp_log_source);
}
else {
ShowMessage("Reload.dll读取失败!请检查程序完整性!");
}
log_reason = NULL;
FreeLibrary(log_reason); // 释放dll
log_reason = NULL;
Hdl = NULL;
::FreeLibrary(Hdl); // 释放dll
delete Hdl;
extern "C" __declspec(dllexport) AnsiString __stdcall logreason(AnsiString log_dev_ip, AnsiString logresource) // 纵向告警原因判定函数
{
AnsiString newp_func_inipath, newp_func_ws_dm, newp_func_ws_n;
.................省略中间过程代码..............
newp_func_ado->Close(); //关闭过程中临时创建的的ado连接
newp_func_ado->SQL->Clear(); //清空sql语句
delete newp_func_ado;删除ado
}
return(newp_func_src_data_net_p + "." + newp_func_dev_data_net_p + "." + newp_func_dst_data_net_p + "." + newp_func_logtype); //返回结果字符串
}
newp_func_ado->Close();
newp_func_ado->SQL->Clear();
newp_func_ado->SQL->Add(newp_func_sql);
newp_func_ado->Open();
newp_func_ado->SQL->Clear();
//newp_func_ado->Close();
newp_func_ado->Connection->Close();
//newp_func_ado->Connection->Destroying();
newp_func_ado->Free();
//FreeLibrary(newp_func_ado);
delete newp_func_ado;
//log_reason = NULL;
FreeLibrary(log_reason); // 释放dll
//log_reason = NULL;
//Hdl = NULL;
ShowMessage("1"); //1会弹出
::FreeLibrary(Hdl); // 释放dll //这儿释放出问题了....
ShowMessage("2"); //2就没有了
delete Hdl;
//Hdl = NULL;
// ::FreeLibrary(Hdl); // 一定不要忘记调用完毕后释放DLL