问题
xxxxxx.exe 中的 0x0043a998 处有未经处理的异常:0xC0000005: 读取位置 0x029d846c 时发生访问冲突
断点位置
..\MicrosoftSDKs\Windows\v7.0A\Include\GdiPlusBitmap.h
Image::GetWidth()
{
UINT width = 0;
→ SetStatus(DllExports::GdipGetImageWidth(nativeImage,&width));
return width;
}
原因及解决方案:
原因
在使用Image对象之前调用了Gdiplus::GdiplusShutdown函数,使得之前创建的Image对象全部为野指针,建议一个程序只初始化一次GDI,在整个程序结束后关闭,而不要在操作程序过程中使用Gdiplus::GdiplusShutdown关闭GDI。
解决方案
在整个解决方案里搜索“Gdiplus::GdiplusShutdown “,删掉冗余的GDI关闭函数。
Gdiplus::GdiplusShutdown(gdiplusToken);
GdiplusStartupInput gdiplusStartupInput;
bool fRet = true;
if( gdiplusToken == 0 )
fRet = GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL);