เริ่มต้น 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 ไฟล์จากมันลงใน 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)


ฉันลองติดตั้ง codeblocks และ mingw ใหม่ ซึ่งแก้ไขปัญหาได้

ดูเหมือนว่า GLFW3 ไม่ชอบการติดตั้งเวอร์ชันก่อนหน้าในเวลาเดียวกันด้วยเหตุผลบางประการ ดังนั้นหากใครก็ตามที่ประสบปัญหาคล้ายกัน คุณอาจต้องการลองทำเช่นนั้น

person Mikkel Dockweiler Sørensen    schedule 03.07.2013
comment
สิ่งประเภทนี้จะเกิดขึ้นเมื่อคุณใส่ DLLs ใน System32 อย่าทำเช่นนั้น แจกจ่ายพร้อมกับแอปพลิเคชันของคุณและปล่อยให้ไดเร็กทอรีระบบไม่ถูกแตะต้อง - person Andon M. Coleman; 20.01.2014

ฉันประสบปัญหาที่คล้ายกันใน Cocos 3.8.1 และ 3.10 ฉันไม่เคยติดตั้ง codeblocks หรือ mingw เลย จึงไม่สมเหตุสมผลที่จะติดตั้งมันให้ฉัน

ไฟล์ GLFW.lib ในไดเร็กทอรี cocos ล้าสมัย

http://www.glfw.org/download.html และแทนที่ไฟล์ lib ใน โปรเจ็กต์ล่าสุด และอาจแก้ไขข้อผิดพลาดของคุณได้

person Paul Gilmore    schedule 15.04.2016
comment
ฉันประสบปัญหาเดียวกัน มีข้อมูลเพิ่มเติมที่คุณสามารถเพิ่มได้หรือไม่? คุณต้องแทนที่ไฟล์ใด และคุณได้ทำอะไรหลังจากนั้น เช่น สร้างทุกอย่างใหม่ ฯลฯ ดูเหมือนว่าการแทนที่ cocos2d\external\glfw3\prebuilt\win32\glfw3.lib จะไม่เกิดขึ้น นอกเหนือจากการแทนที่อันในเอาต์พุต dirs ของฉัน - person TankorSmash; 03.05.2018