DLL调用时候的变量生成周期的问题
我想给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的方式也无效。