我在一个循环中,对从一个目录下用获取到的DLL文件,进行LoadLibrary, GetProcAddress, FreeLibrary,三个操作.但是对于有的DLL文件,在LoadLibrary的时候,CodeGuard 提示 access in invalid menory.CodeGuard日志如下:
Error 00193. 0x100400 (Thread 0x0908):
Access in invalid memory: Attempt to access 156 byte(s) at 0x0209BB8C.
memcpy(0x00154E48, 0x0209BB8C, 0x9C [156])
Call Tree:
0x020863A2(=CashOperSquadDatesRpt.dll:0x01:1153A2)
0x01F716F1(=CashOperSquadDatesRpt.dll:0x01:0006F1)
0x7C93CBAB(=ntdll.dll:0x01:01BBAB)
0x7C936178(=ntdll.dll:0x01:015178)
0x7C9362DA(=ntdll.dll:0x01:0152DA)
0x7C801BB9(=kernel32.dll:0x01:000BB9)
------------------------------------------
编译已经是使用Full Debug了,但记录到的信息就是这么多.
请教这是为什么?是不是我的DLL文件有问题?
但如果将这个出问题的DLL文件,单独放在目录下或者是和其它1 ~ 4 个一起的话,又是没提示的.
如下是我的书写代码:
AnsiString fullFileName = Format("%s\\%s", ARRAYOFCONST((m_reportDirectory, reportFileName)));
char fileName[MAX_PATH];
memset(fileName, 0, MAX_PATH);
strcpy(fileName, fullFileName.c_str());
dllIns = ::LoadLibrary(fileName);