您的位置:程序门 -> vc/mfc -> 进程/线程/dll



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


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


dll调用时候的变量生成周期的问题
发表于:2008-02-24 18: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的方式也无效。

发表于:2008-02-24 18:53:141楼 得分:0
mark
发表于:2008-02-24 21:23:152楼 得分:0
&ef?ef已经是函数指定了。。
startmonitorfile是干什么的?
发表于:2008-02-24 21:53:313楼 得分:0
如果回调函数不是类中的成员就不需要static。
发表于:2008-02-24 21:55:064楼 得分:0
encodefunc   ef是定义在哪里?最好多贴点代码。
发表于:2008-02-25 12:00:415楼 得分:0
跟踪过没有?dll里面保存函数指针的变量的值是否发生了变化?也许其它内存越界问题或在另一个地方复位了这个变量的值。可以设置条件断点进行跟踪。


快速检索

最新资讯
热门点击