GLFW 3 инициализирован, но нет?

Я изо всех сил пытаюсь создать окно с помощью функции GLFW 3, glfwCreateWindow. Я установил функцию обратного вызова ошибки, которая в значительной степени просто распечатывает номер ошибки и описание, и в соответствии с этим библиотека GLFW не была инициализирована, хотя функция glfwInit только что вернула успех?

Вот отрывок из моего кода

// Error callback function prints out any errors from GFLW to the console
static void error_callback( int error, const char *description )
{
    cout << error << '\t' << description << endl;
}


bool Base::Init()
{
    // Set error callback
    /*!
     *  According to the documentation this can be use before glfwInit,
     *  and removing won't change anything anyway
     */
    glfwSetErrorCallback( error_callback );



    // Initialize GLFW
    /*!
     *  This return succesfull, but...
     */ 
    if( !glfwInit() )
    {
        cout << "INITIALIZER: Failed to initialize GLFW!" << endl;
        return false;
    }
    else
    {
        cout << "INITIALIZER: GLFW Initialized successfully!" << endl;
    }



    // Create window
    /*!
     *  When this  is called, or any other glfw functions, I get a
     *  "65537    The GLFW library is not initialized" in the console, through
     *  the error_callback function
     */
    window = glfwCreateWindow( 800,
                               600,
                               "GLFW Window",
                               NULL,
                               NULL );


    if( !window )
    {
        cout << "INITIALIZER: Failed to create window!" << endl;
        glfwTerminate();
        return false;
    }


    // Set window to current context
    glfwMakeContextCurrent( window );


    ...


    return true;
}

А вот что выводится в консоли

INITIALIZER: GLFW Initialized succesfully!
65537    The GLFW library is not initialized
INITIALIZER: Failed to create window!

Я думаю, что получаю сообщение об ошибке из-за не совсем правильной настройки, но я сделал все, что мог, с тем, что мог найти вокруг.

Я скачал windows 32 с glfw.org и воткнул из него 2 include-файла в minGW/include/GLFW, 2 файла .a (из папки lib-mingw) в minGW/lib и dll тоже из lib- папку mingw в Windows/System32

В code::blocks у меня есть параметры сборки -> настройки компоновщика, связанные 2 файла .a из загрузки. Я считаю, что мне нужно связать больше вещей, но я могу понять, что или откуда я должен получить эти вещи.


person Mikkel Dockweiler Sørensen    schedule 29.06.2013    source источник


Ответы (2)


Я попытался переустановить кодовые блоки и mingw, что решило проблему.

Похоже, GLFW3 по какой-то причине не любит одновременную установку предыдущих версий, поэтому, если у кого-то еще есть аналогичная проблема, вы можете попробовать это.

person Mikkel Dockweiler Sørensen    schedule 03.07.2013
comment
Такое происходит, когда вы помещаете библиотеки DLL в System32. Не делайте этого, распространяйте их вместе с вашим приложением и оставьте системные каталоги нетронутыми. - person Andon M. Coleman; 20.01.2014

У меня были похожие проблемы в Cocos 3.8.1 и 3.10. Я никогда не устанавливал ни кодблоки, ни mingw, поэтому смысла их устанавливать для меня не было.

Файл GLFW.lib в каталоге cocos устарел.

http://www.glfw.org/download.html и замените файл lib в вашем project с последним, и это может устранить вашу ошибку.

person Paul Gilmore    schedule 15.04.2016
comment
Столкнулся с той же проблемой, можно еще что-нибудь добавить? Какой файл вам нужно было заменить, и делали ли вы что-нибудь после этого, например, все перестраивали и т. д.? Замена cocos2d\external\glfw3\prebuilt\win32\glfw3.lib, похоже, не помогает, помимо замены тех, что в моих выходных каталогах. - person TankorSmash; 03.05.2018