Zacząłem się bawić gdi+ i zrobiłem sobie apkę, która wyświetla obrazek na ekranie. Wszystko fajnie. Kompiluje g++ i odpalam. Działa, wyświetla się obrazek. Po 2s przy return 0; program wywala. Wydaje mi się, że coś źle dealokuje, ale wygląda jakby wszystko było ok. Nwm czemu program wywala (tzn. wiem - bo na stosie jest jeszcze jakiś obiekt, którego nie usunąłem, ale nie widzie nigdzie w kodzie bym popełnił błąd). :/
#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;
}
Aha i kompiluje (kompilator wersja najnowsza):
g++ -c main.cpp -std=c++11
g++ -o main main.o -lgdiplus
main.exe