调用一个DLL,出现一个初始化错误,用dependency walker分析如下

annywoody 2009-04-13 11:12:01
调用一个DLL,出现一个初始化错误,错误如下图所示

<table style="width:auto;"><tr><td><a href="http://picasaweb.google.com/lh/photo/NurZ6R-_liS017OcWg8tHw?feat=embedwebsite"><img src="http://lh4.ggpht.com/_gPhlXww_6fc/SeKgkbgwAVI/AAAAAAAAAjg/AhQXFBoV2ag/s144/%E5%88%9D%E5%A7%8B%E5%8C%96%E9%94%99%E8%AF%AF%E4%BF%A1%E6%81%AF.jpg" /></a></td></tr><tr><td style="font-family:arial,sans-serif; font-size:11px; text-align:right">发件人 <a href="http://picasaweb.google.com/li3jin/LED?feat=embedwebsite">LED</a></td></tr></table>
用dependency walker分析调用程序exe文件如下(只贴出出错部分)
LoadLibraryExW("C:\WINDOWS\system32\MSCTF.dll", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) 返回 NULL。错误: 内存分配访问无效。 (998).
LoadLibraryExW("C:\WINDOWS\system32\MSCTF.dll", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) 返回 NULL。错误: 内存分配访问无效。 (998).
第二 次异常 0xC0000005 (访问违例) 出现在 "NTDLL.DLL" 于地址 0x7C98478E。
已退出 "KJ101NINTERFACEANDLED.EXE" (进程 0x654),代码 -1073741819 (0xC0000005)。
...全文
250 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
annywoody 2009-04-14
  • 打赏
  • 举报
回复
dll的下载地址是:
http://www.eqled.com/4/xiazai/EQ1002-1003%E5%8A%A8%E6%80%81%E5%BA%93%E6%96%87%E4%BB%B6.rar
annywoody 2009-04-13
  • 打赏
  • 举报
回复
annywoody 2009-04-13
  • 打赏
  • 举报
回复
annywoody 2009-04-13
  • 打赏
  • 举报
回复

void CKJ101NInterfaceANDLedDlg::SendStringToLED()
{
BOOL bResult;
if (m_bWelcomeCheck)
{
GetDlgItemText(IDC_EDIT_WELCOME,m_strWelcome);
bResult = User_AddText(1,(char *)(LPCTSTR)m_strWelcome,EQ_YELLOW,2,2,5);
bResult = User_SendToScreen(1);
}
else
{
if (g_AlarmSensorMap.size() == 0)
{
SetDlgItemText(IDC_STATIC_STATUS,"无传感器报警");
//bResult = User_AddText(1,(char *)(LPCTSTR)m_strWelcome,EQ_YELLOW,2,2,5);
//bResult = User_SendToScreen(1);
}
else
{
CString strTemp,strSendString;
strSendString.Format(" ");
map <CString,AlarmSensorInfo>::iterator iter= g_AlarmSensorMap.begin();
for (;iter!=g_AlarmSensorMap.end();iter++)
{
AlarmSensorInfo sensorinfo = iter->second;
if (sensorinfo.nType == 1)
{
strTemp.Format("%s号分站%s传感器%s,%s,%.2f超限报警",sensorinfo.strStationID,sensorinfo.strSensorID,sensorinfo.strAddress,sensorinfo.strName,sensorinfo.fValue);
}
else if (sensorinfo.nType == 2)
{
if (sensorinfo.strName.Find("风门") != -1)
{
strTemp.Format("%s号分站%s传感器%s,%s,状态:开",sensorinfo.strStationID,sensorinfo.strSensorID,sensorinfo.strAddress,sensorinfo.strName);
}
else
{
strTemp.Format("%s号分站%s传感器%s,%s,状态:关",sensorinfo.strStationID,sensorinfo.strSensorID,sensorinfo.strAddress,sensorinfo.strName);
}
}
strSendString = strSendString + strTemp + ";";
}
bResult = User_AddText(1,(char *)(LPCTSTR)strSendString,EQ_YELLOW,2,2,5);
bResult = User_SendToScreen(1);
if (!bResult)
{
SetDlgItemText(IDC_STATIC_STATUS,"发送报警字符串失败");
}
else
{
SetDlgItemText(IDC_STATIC_STATUS,"发送报警字符串成功");
}
}
}
}

上面是我调用dll中函数相关的代码

下面是dll函数说明

//函数:添加字库文字
EQ1002_DLL_API BOOL __stdcall User_AddText(int iCardNum,char* chText,int iColor,int iActionType,int iActionSpeed,int iStillTime);
annywoody 2009-04-13
  • 打赏
  • 举报
回复
用dependency walker分析调用程序exe文件如下(只贴出出错部分)
LoadLibraryExW("C:\WINDOWS\system32\MSCTF.dll", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) 返回 NULL。错误: 内存分配访问无效。 (998).
LoadLibraryExW("C:\WINDOWS\system32\MSCTF.dll", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) 返回 NULL。错误: 内存分配访问无效。 (998).
第二 次异常 0xC0000005 (访问违例) 出现在 "NTDLL.DLL" 于地址 0x7C98478E。
已退出 "KJ101NINTERFACEANDLED.EXE" (进程 0x654),代码 -1073741819 (0xC0000005)。

单步调试还是弹出一个“应用程序正常初始化(0xc0000005)失败”的错误窗口,然后就跳到汇编语言了
在代码中注释掉调用的DLL中的两个函数就不会出现错误,程序运行都是正常的
annywoody 2009-04-13
  • 打赏
  • 举报
回复
图上的内容是
应用程序正常初始化(0xc0000005)失败。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧