多线程调用同一dll

superstar162 2009-08-02 08:19:25
现有一个a.dll,是处理串口通讯的,里面有一函数p_OpenCom(int iPort)用来打开串口,调用它时会自动关闭前一串口。
如:p_OpenCom(1);//打开Com1
p_OpenCom(2);//打开Com2
结果就是在打开Com2前会将Com1关闭。
在两个线程中分别调用p_OpenCom(1)和p_OpenCom(2),也会出现同样的情况,即在打开Com2之前会关闭Com1(先启动打开Com1的线程)。
请问有什么办法在打开Com2的时候不关闭前一串口呢?谢谢!
...全文
108 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
superstar162 2009-08-05
  • 打赏
  • 举报
回复
OK 谢谢大家啦 
zhaohongbo83 2009-08-04
  • 打赏
  • 举报
回复
up 一下!
zhaohongbo83 2009-08-04
  • 打赏
  • 举报
回复
这个应该不是线程能解决的问题了,就像3#所说的。

得有两个进程通信来解决这个问题

学习了

pady_pady 2009-08-03
  • 打赏
  • 举报
回复
dll里面有mutex对象,用od找到createmutex位置,找到关键跳转指令修改下就好了
bragi523 2009-08-02
  • 打赏
  • 举报
回复
DLL肯定做了全局唯一
很难实现啊
qq539929779 2009-08-02
  • 打赏
  • 举报
回复
QQ539929779
qq539929779 2009-08-02
  • 打赏
  • 举报
回复
加我QQ吧,可以说得清楚些!
superstar162 2009-08-02
  • 打赏
  • 举报
回复
谢谢3楼,可不可以将a.dll改名成a1.dll,然后分别调用这a.dll和a1.dll,分别处理?有用么这样?或是该怎么做?结帐会散分的,谢谢!
qq539929779 2009-08-02
  • 打赏
  • 举报
回复
有一种不太可取的办法就是你可用OD进行破解!
qq539929779 2009-08-02
  • 打赏
  • 举报
回复
在线程调用可能不行吧,因为dll在一个进程中,对所有线程 是共享的,而这个dll又不是你自己写的,没有源代码,你得用两个进程即exe程序进行调用他,同进采用这个exe同你主exe进行通信就可以了!在下不才,只能这样给你答复,如觉得有些启发,给点分吧!我分不多了!
superstar162 2009-08-02
  • 打赏
  • 举报
回复
谢谢楼上,不过a.dll是别人做好的dll,只能调用。
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=1734

15,471

社区成员

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

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