【发布时间】:2016-12-01 18:23:56
【问题描述】:
我用 C++ 编写了一个程序,它必须在屏幕上打印图像并在 2 秒后退出。一切正常,直到程序必须退出。程序运行时返回 0;指令,它崩溃了。我认为这是因为错误的解除分配,但代码似乎是正确的。
#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
【问题讨论】: