读书人

dll的一个小疑点

发布时间: 2012-01-18 00:23:26 作者: rapoo

dll的一个小问题!
dll中导出的一个函数:
BOOL test(char *ch)
{
printf( "%s\n ",ch);
free(ch);
return true;
}
在exe中调用:
typedef BOOL (_stdcall *lptest)(char *szFileToStart);
HMODULE hModule=LoadLibrary(dllname);
char szAlgPath[256];
strcpy(szAlgPath, "c:\\calc.exe ");
lptest test;
test=(lptest)GetProcAddress(hModule, "test ");
test(szAlgPath);
为什么总是报错呢?提示当函数调用时,esp的值没有正确的保存.



[解决办法]
szAlgPath这个数组不可free!
free(ch);不应该放在test函数里面,否则你这个函数对参数ch就有了较高的要求,比如至少它应该是可free的!

读书人网 >VC/MFC

热点推荐