vc++调用动态库中的函数遇到的问题

qq_30812141 2015-10-21 11:48:11
我调用别人的动态库的函数,程序就死在那边不往下走,我想设置一个超时退出机制,怎么做?
我尝试过新建一个线程来操作,但是该动态库函数返回的数据与预期不正确,所以新线程的方式或是不可行。
...全文
163 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Saleayas 2015-10-22
  • 打赏
  • 举报
回复
如果你需要使用这样的方式测试芯片的话,那么启用进程来测试。 主进程负责处理和记录。 对于每一个芯片,创建一个测试进程,使用进程间通信来判断,诸如管道、消息等等。 当主线程在指定的时间内没有收到测试线程的测试结果,那么可以认为该芯片是错误的。然后关闭该测试进程。
赵4老师 2015-10-22
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
启动一个子进程调用该dll,超时TerminateProcess该子进程。
正解!
draculacsdn 2015-10-22
  • 打赏
  • 举报
回复
如果dll在主线程中调用,无法通过其他线程来控制主线程; 为什么dll不能在子线程中正确调用呢?是不是有什么句柄之类的东西?或者串口? 试试看 子线程中独立调用dll,包括LoadLibrary都在子线程里做,
greenabc 2015-10-21
  • 打赏
  • 举报
回复
重写这个DLL. 调用一个动态库(只有二进制文件)中的方法,超时退出-是不可能的。
xfxTianyi 2015-10-21
  • 打赏
  • 举报
回复
除了换/改链接库,没好法子,判断超时,直接结束工作线程不建议采取
qq_30812141 2015-10-21
  • 打赏
  • 举报
回复
引用 4 楼 worldy 的回复:
我调用别人的动态库的函数,程序就死在那边不往下走,我想设置一个超时退出机制,怎么做? 我尝试过新建一个线程来操作,但是该动态库函数返回的数据与预期不正确,所以新线程的方式或是不可行。 前后说法矛盾了吧? 前面说不返回,后面又说返回。 那么是不是说后面返回的是因为超时了的返回?如果是超时返回,返回的数据怎么可能正确?
您好,是这样的, 测试对象:好芯片 方式:主线程调用dll函数 结果:正确返回 测试对象:坏芯片 方式:主线程调用dll函数 结果:卡在调用的函数语句 测试对象:好/坏芯片 方式:子线程调用dll函数 结果:错误返回(返回的意思应该是inavailable utility)
worldy 2015-10-21
  • 打赏
  • 举报
回复
我调用别人的动态库的函数,程序就死在那边不往下走,我想设置一个超时退出机制,怎么做? 我尝试过新建一个线程来操作,但是该动态库函数返回的数据与预期不正确,所以新线程的方式或是不可行。 前后说法矛盾了吧? 前面说不返回,后面又说返回。 那么是不是说后面返回的是因为超时了的返回?如果是超时返回,返回的数据怎么可能正确?
赵4老师 2015-10-21
  • 打赏
  • 举报
回复
启动一个子进程调用该dll,超时TerminateProcess该子进程。
qq_30812141 2015-10-21
  • 打赏
  • 举报
回复
这个dll是第三方提供的,我改不了

15,471

社区成员

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

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