我究竟做错了什么?程序崩溃。 [GDI+, WINAPI, C++]

What am I doing wrong? Program crashes. [GDI+, WINAPI, C++]

我用 C++ 编写了一个程序,它必须在屏幕上打印图像并在 2 秒后退出。一切正常,直到程序必须退出。当程序开启时 return 0;指令,它崩溃了。我认为这是因为错误的释放,但代码似乎是正确的。


</p> <pre><code>#include <iostream> #include <windows.h> #include <gdiplus.h> using namespace std; using namespace Gdiplus; HDC hdc = GetDC(NULL); int main() { GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); Graphics graphics(hdc); Rect dst(500, 500, 17, 17); Image* image = Image::FromFile(L"image.png", false); cout<<"Image size: "<<image->GetWidth()<<", "<<image->GetHeight()<<endl; graphics.DrawImage(image, dst); delete image; GdiplusShutdown(gdiplusToken); Sleep(2000); return 0; }


我有最新的编译器,我通过以下方式编译:

g++ -c main.cpp -std=g++11

g++ -o main main.o -lgdiplus

图形析构函数在 GdiplusShutdown 之后执行。你需要用

括起来
Graphics graphics(hoc);

在 { }