0
2 초 후에 화면에 이미지를 인쇄하고 종료해야하는 C++ 프로그램을 작성했습니다. 프로그램이 종료 될 때까지 모든 것이 괜찮 았습니다. 프로그램이 돌아올 때 0; 명령, 충돌. 나는 잘못된 거래로 인한 것이라고 생각하지만, 코드는 정확하다고 보입니다.내가 뭘 잘못 했니? 프로그램이 충돌합니다. [GDI +, WINAPI, C++]
#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;
}
나는 최신 compilator있어 난으로 컴파일 :
g ++ -c MAIN.CPP -std = g ++ (11)
그램 ++ - main main.o -lgdiplus
감사합니다 {}에서
로 블록을 둘러싸 필요합니다! 이제 모든 것이 잘 작동합니다. :) –
@IgorSantarek - 물론 GdiplusStartup과 main - Image :: FromFile의 결과를 확인하지 못했습니다. 따라서 최소 2 if() {}가 필요합니다. 그러나 직접 오류는 소멸자가 종료했을 때 실행 한 것입니다. 로컬 블록, 현재 버전에서 이것은 GdiplusShutdown 이후였습니다. – RbMm