Почему вызов функции-члена GDI Plus убивает приложение?

#c

Вопрос:

Программа будет убита, как только я войду GetFamilyCount() , поэтому «Выход» не печатается.

Вызов GetLastStatus() печатает значение 18, равное GdiplusNotInitialized

Я не уверен, почему он не инициализирован. Вы можете ясно видеть, что я инициализировал его здесь,

 Gdiplus::PrivateFontCollection privateFontCollection; 
 

Я использую MinGW для создания программы.

 MinGW-w64 9.0.0
GCC Version 11.1
OS is Windows 10
 

MinGW взято из http://winlibs.com/

 #include <iostream>
#include <Windows.h>
#include <Gdiplus.h>

int main() {
    std::cout << "Start" << "n";

    Gdiplus::PrivateFontCollection privateFontCollection; 

    std::cout << privateFontCollection.GetLastStatus() << "n";

    std::cout << privateFontCollection.GetFamilyCount() << "n";

    std::cout << "Exit" << "n";
}
 

Комментарии:

1. Ошибка означает, что вы не звонили GdiplusStartup

2. @IWonderWhatThisAPIDoes Вау, я такого раньше не находил. Спасибо, это работает!

3. @jeffbRTC Вы должны прочитать документацию , например, в документе для перечисления состояния говорится: » GdiplusNotInitialized Указывает, что API GDI не находится в инициализированном состоянии. Для функционирования всех объектов GDI требуется, чтобы GDI находился в инициализированном состоянии. Инициализируйте GDI , вызвав GdiplusStartup» .