GLFW 3 diinisialisasi, namun belum?

Saya kesulitan membuat jendela dengan fungsi GLFW 3, glfwCreateWindow. Saya telah menyetel fungsi panggilan balik kesalahan, yang hanya mencetak nomor dan deskripsi kesalahan, dan menurut itu perpustakaan GLFW belum diinisialisasi, padahal fungsi glfwInit baru saja mengembalikan kesuksesan?

Berikut ini cuplikan dari kode saya

// 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;
}

Dan inilah yang dicetak di konsol

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

Saya pikir saya mendapatkan kesalahan karena pengaturannya tidak sepenuhnya benar, tetapi saya telah melakukan yang terbaik yang saya bisa dengan apa yang dapat saya temukan di sekitar tempat itu.

Saya mengunduh windows 32 dari glfw.org dan memasukkan 2 file yang disertakan darinya ke minGW/include/GLFW, 2 file .a (dari folder lib-mingw) ke minGW/lib dan dll, juga dari lib- folder mingw, ke Windows/System32

Dalam kode::blok yang saya miliki, dari opsi build -> pengaturan tautan, menautkan 2 file .a dari unduhan. Saya yakin saya perlu menghubungkan lebih banyak hal, namun saya dapat mengetahui apa, atau dari mana saya harus memperolehnya.


person Mikkel Dockweiler Sørensen    schedule 29.06.2013    source sumber


Jawaban (2)


Saya mencoba menginstal ulang blok kode dan mingw, yang menyelesaikan masalah.

Sepertinya GLFW3 tidak suka menginstal versi sebelumnya secara bersamaan karena alasan tertentu, jadi jika ada orang lain yang mengalami masalah serupa, Anda mungkin ingin mencobanya.

person Mikkel Dockweiler Sørensen    schedule 03.07.2013
comment
Hal semacam ini terjadi ketika Anda memasukkan DLL ke System32. Jangan lakukan itu, distribusikan bersama aplikasi Anda dan biarkan direktori sistem tidak tersentuh. - person Andon M. Coleman; 20.01.2014

Saya mengalami masalah serupa di Cocos 3.8.1 dan 3.10. Saya belum pernah menginstal codeblock atau mingw, jadi tidak masuk akal untuk menginstalnya untuk saya.

File GLFW.lib di direktori cocos sudah kedaluwarsa.

http://www.glfw.org/download.html, dan ganti file lib di proyek dengan yang terbaru, dan ini mungkin mengatasi kesalahan Anda.

person Paul Gilmore    schedule 15.04.2016
comment
Saya mengalami masalah yang sama, adakah info lain yang bisa Anda tambahkan? File mana yang perlu Anda ganti, dan apakah Anda melakukan sesuatu setelahnya, seperti membangun kembali semuanya, dll? Mengganti cocos2d\external\glfw3\prebuilt\win32\glfw3.lib sepertinya tidak berhasil, selain mengganti yang ada di direktori keluaran saya. - person TankorSmash; 03.05.2018