DLL调用时候的变量生成周期的问题

chinahuman 2008-02-24 06:47:37
我想给DLL实现一个回调,也就是说DLL里面有一个定时器在定期执行一个操作,这个操作里有一步是回调当前程序的函数。比如说:
定义这个回调函数的指针类型
typedef bool (*EncodeFunc) (char *pFileName, char *upwd, char *sPwd);
实现这个类型的函数
static bool ProcessFile(char *fileName, char *UPWD, char *SPWD)
这里的调用DLL的API:
EncodeFunc ef = &ProcessFile;
startMonitorFile(&ef);

现在的问题是,如果我传给DLL并马上调用,就不会有问题。但是如果把这个值针在DLL保存起来,等到定时器到时间时,再调用,那么就会得到Access violation at address 00000000. Read of address 00000000 这样的异常。感觉像是ef 这个的变量被清空了,如何才能长时间保存这个变量呢?我使用static的方式也无效。

...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jameshooo 2008-02-25
  • 打赏
  • 举报
回复
跟踪过没有?DLL里面保存函数指针的变量的值是否发生了变化?也许其它内存越界问题或在另一个地方复位了这个变量的值。可以设置条件断点进行跟踪。
cnzdgs 2008-02-24
  • 打赏
  • 举报
回复
EncodeFunc ef是定义在哪里?最好多贴点代码。
cnzdgs 2008-02-24
  • 打赏
  • 举报
回复
如果回调函数不是类中的成员就不需要static。
DentistryDoctor 2008-02-24
  • 打赏
  • 举报
回复
&ef?ef已经是函数指定了。。
startMonitorFile是干什么的?
captain_x 2008-02-24
  • 打赏
  • 举报
回复
mark

15,471

社区成员

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

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