VS2015用MFC对话框程序引用dll工程运行出错 Debug Assertion Failed!

HHHeinz 2016-10-16 10:28:01
VS2015自己用MFC写了个全局钩子的dll然后在另一个对话框工程中引用该dll但是运行时出现如下错误

---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Debug Assertion Failed!

Program: C:\Windows\SYSTEM32\mfc140d.dll
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\appcore.cpp
Line: 196


For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

---------------------------
中止(A) 重试(R) 忽略(I)
---------------------------
...全文
3148 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
猞猁狲 2016-10-31
  • 打赏
  • 举报
回复
引用 6 楼 HHHeinz 的回复:
[quote=引用 3 楼 saylerboxer 的回复:] 自己加log输出看哪一行出错,这种断言错误应该是句柄为0造成的
错误里显示的196行是appcore.cpp里的这一句ASSERT(AfxGetThread() == NULL),请问句柄为0的话我应该怎么改呢?[/quote] 线程已经退出,对线程句柄操作了? 点重试进去看调用堆栈,从堆栈里找到自己的代码
HHHeinz 2016-10-23
  • 打赏
  • 举报
回复
引用 2 楼 Saleayas 的回复:
做钩子的 DLL 最好不要使用 MFC。 如果实在需要,加上 MFC 的 初始化。
我已经加上了初始化,,,
HHHeinz 2016-10-23
  • 打赏
  • 举报
回复
引用 3 楼 saylerboxer 的回复:
自己加log输出看哪一行出错,这种断言错误应该是句柄为0造成的
错误里显示的196行是appcore.cpp里的这一句ASSERT(AfxGetThread() == NULL),请问句柄为0的话我应该怎么改呢?
HHHeinz 2016-10-23
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
可是我看了“调用堆栈”没有发现有什么错误,要不我把代码发给您您帮我看看?
赵4老师 2016-10-18
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
猞猁狲 2016-10-17
  • 打赏
  • 举报
回复
自己加log输出看哪一行出错,这种断言错误应该是句柄为0造成的
Saleayas 2016-10-17
  • 打赏
  • 举报
回复
做钩子的 DLL 最好不要使用 MFC。 如果实在需要,加上 MFC 的 初始化。
三岁、就很帅 2016-10-17
  • 打赏
  • 举报
回复
加断点发调试信息

15,471

社区成员

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

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