MFC框架下,调用DLL失败,debug时提示访问冲突!
提示信息为:“SystemCenter.exe”:已加载“C:\DocumentsandSettings\Administrator\桌面\1\PacketsFilter...
提示信息为:“SystemCenter.exe”: 已加载“C:\Documents and Settings\Administrator\桌面\1\PacketsFilter.dll”,已加载符号。
“SystemCenter.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_dec6ddd2\mfc80u.dll”,已加载符号。
“SystemCenter.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd\msvcr80.dll”,已加载符号。
SystemCenter.exe 中的 0x0041885c 处最可能的异常: 0xC0000005: 写入位置 0x00fdfea1 时发生访问冲突
SystemCenter.exe 中的 0x0041885c 处未处理的异常: 0xC0000005: 写入位置 0x00fdfea1 时发生访问冲突
源码:
C/C++ code TCHAR providerPath[_MAX_PATH];
GetPath(providerPath);
if(providerPath[0] == '\0')
{
AfxMessageBox("无法找到应用程序路径!");
iSetRule.SetLog("无法找到应用程序路径!");
return 0;
}
_tcscat(providerPath,_T("PacketsFilter.dll"));
if(_taccess(providerPath,0) == -1)
{
AfxMessageBox("对应的DLL文件未能找到!");
iSetRule.SetLog("对应的DLL文件未能找到!");
return 0;
}
cInstallExe.InstallProvider(providerPath);
if(!cInstallExe.IsWinsock2())
{
AfxMessageBox("系统未安装winsock2!");
iSetRule.SetLog("对应的DLL文件未能找到!");
return FALSE;
}
if(!cInstallExe.IsInstalled(providerPath) && cInstallExe.InstallProvider(providerPath) != XERR_SUCCESS)
{
AfxMessageBox("安装失败!");
iSetRule.SetLog("安装失败!");
return FALSE;
}
//_tcscpy(providerPath,_T("C:\\Documents and Settings\\Administrator\\桌面\\1\\PacketsFilter.dll"));
//AfxMessageBox(providerPath);
mDll = LoadLibrary(providerPath);
我已经拷贝DLL文件到DEBUG下!
补充:用单步调式,运行到LoadLibrary时出错!提示上述错误! 展开
“SystemCenter.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_dec6ddd2\mfc80u.dll”,已加载符号。
“SystemCenter.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd\msvcr80.dll”,已加载符号。
SystemCenter.exe 中的 0x0041885c 处最可能的异常: 0xC0000005: 写入位置 0x00fdfea1 时发生访问冲突
SystemCenter.exe 中的 0x0041885c 处未处理的异常: 0xC0000005: 写入位置 0x00fdfea1 时发生访问冲突
源码:
C/C++ code TCHAR providerPath[_MAX_PATH];
GetPath(providerPath);
if(providerPath[0] == '\0')
{
AfxMessageBox("无法找到应用程序路径!");
iSetRule.SetLog("无法找到应用程序路径!");
return 0;
}
_tcscat(providerPath,_T("PacketsFilter.dll"));
if(_taccess(providerPath,0) == -1)
{
AfxMessageBox("对应的DLL文件未能找到!");
iSetRule.SetLog("对应的DLL文件未能找到!");
return 0;
}
cInstallExe.InstallProvider(providerPath);
if(!cInstallExe.IsWinsock2())
{
AfxMessageBox("系统未安装winsock2!");
iSetRule.SetLog("对应的DLL文件未能找到!");
return FALSE;
}
if(!cInstallExe.IsInstalled(providerPath) && cInstallExe.InstallProvider(providerPath) != XERR_SUCCESS)
{
AfxMessageBox("安装失败!");
iSetRule.SetLog("安装失败!");
return FALSE;
}
//_tcscpy(providerPath,_T("C:\\Documents and Settings\\Administrator\\桌面\\1\\PacketsFilter.dll"));
//AfxMessageBox(providerPath);
mDll = LoadLibrary(providerPath);
我已经拷贝DLL文件到DEBUG下!
补充:用单步调式,运行到LoadLibrary时出错!提示上述错误! 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询