Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Qt GLFW and GLEW setup



  • I have just dowloaded GLEW from link and GLFW source package from link, but I do not know how to install and link to my .pro file. I am using 5.13.0 version of Qt on Windows 10 64-bit

    Please give me a specification.


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Before anything else, why do you need these libraries for ?
    Qt already provides support for cross-platform OpenGL.

    The installation depends on your OS.

    As for linking the libraries, you can use Qt Creator's wizard for that.



  • I just use Qt just for code editing. I guess that Qt own OpenGL libary are not the same as the original OpenGL libary.

    And I just want to use original OpenGL.


  • Lifetime Qt Champion

    Qt does not provide a custom implementation of OpenGL.

    Please take a look at the Qt Gui module and what it offers for OpenGL handling.



  • @SGaist

    But I can add libary to Qt, and GLFW is a libary

    I created a project, right click on it, add libaries, internal libary, include the path to C:\glfw, and it does not allow me to push to the next button


  • Lifetime Qt Champion

    Sure you can, but you might be adding unnecessary dependencies.

    Is the library compiled ?
    Does the architecture match the one you use for Qt ?
    Which compiler was used ?



  • I do not comailed the libary.
    mingw73_64

    The other thing that I have tried is that
    .pro

    TEMPLATE = app
    CONFIG += console c++11
    CONFIG -= app_bundle
    CONFIG -= qt
    
    INCLUDEPATH += "C:\glfw\include\GLFW"
    
    SOURCES += \
            main.cpp
    
    #include <iostream>
    #include <glfw3.h>
    
    using namespace std;
    
    int main() {
    
        cout << "Hello World!" << endl;
        glfwInit();
        return 0;
    }
    

    C:\files\C++\file\main.cpp:9: error: undefined reference to `glfwInit'


  • Lifetime Qt Champion

    You are not linking the library.



  • @SGaist

    Maybe I am lame but I can't find a .lib file in GLFW folder file

    In the GLEW folder C:\glew\lib\Release\x64 there is two .lib file but in the GLFW folder I cannot find any



  • @SGaist

    link there is a pre compailed binary for visual studio

    .pro file

    TEMPLATE = app
    CONFIG += console c++11
    CONFIG -= app_bundle
    CONFIG -= qt
    
    INCLUDEPATH += "C:\glfw\include\GLFW"
    
    LIBS += -L"C:\glfw\lib-vc2019" -glfw3
    
    SOURCES += \
            main.cpp
    

    main.cpp file

    #include <iostream>
    #include <glfw3.h>
    
    using namespace std;
    
    int main() {
        cout << "Hello World!" << endl;
        glfwInit();
        return 0;
    }
    

    error: unrecognized debug output level 'lfw3'



  • @bence said in Qt GLFW and GLEW setup:

    LIBS += -L"C:\glfw\lib-vc2019" -glfw3

    error: unrecognized debug output level 'lfw3'

    Where do yo u get the -glfw3 from? For gcc, for example, the -g is a compiler debugging flag, which would give your error.



  • @JonB now I know that waht was the problem I have to use

    LIBS += -L"C:\glfw\lib-vc2019" -lglfw3
    

    But this time I get 120 issues

    1.PNG

    2.PNG

    I assume that I cannot use GLFW Visual Studio precompile libary. But I cannot know what should I do.



  • @bence
    If you only have libraries for VS/MSVC I believe you have to use that tool chain.



  • @JonB

    I do not install VS to my PC.

    I am sure that there is other way to do that.

    I believe Qt is a excellent platform so there have to be a way to use original OpenGL

    If you have any idea who could I use the original OpenGL in Qt I would really appriciate it.


  • Lifetime Qt Champion

    Your issue is not related to Qt. You are trying to mix and match C++ libraries built with two different compilers. You can't use C++ libraries built with Visual Studio when using MinGW and it's the same the other way around.

    As I already explained Qt does not implement a custom version of OpenGL. You already have access the functions. You are currently making your life more complicated than need be.



  • @SGaist

    Simpley I do not want to install Visual Studio to use the original OpenGL that why I asked who could I do that.

    This youtube is out of date he istall the OpenGL but the current version is not the same
    Because he can install it there have to be a way that I can use it.


  • Lifetime Qt Champion

    The page you linked provides libraries for a lot of compilers including MinGW 32 and 64 bit.

    If you can't use any of them, the compile the library yourself.



  • @SGaist
    I right click on the project and add the whole GLFW folder.

    .pro file

    TEMPLATE = app
    CONFIG += console c++11
    CONFIG -= app_bundle
    CONFIG -= qt
    
    INCLUDEPATH += "C:\glfw\include"
    INCLUDEPATH += "C:\glfw\deps"
    
    
    SOURCES += \
            glfw/deps/getopt.c \
            glfw/deps/glad_gl.c \
            glfw/deps/glad_vulkan.c \
            glfw/deps/tinycthread.c \
            glfw/examples/boing.c \
            glfw/examples/gears.c \
            glfw/examples/heightmap.c \
            glfw/examples/offscreen.c \
            glfw/examples/particles.c \
            glfw/examples/sharing.c \
            glfw/examples/simple.c \
            glfw/examples/splitview.c \
            glfw/examples/wave.c \
            glfw/src/cocoa_time.c \
            glfw/src/context.c \
            glfw/src/egl_context.c \
            glfw/src/glx_context.c \
            glfw/src/init.c \
            glfw/src/input.c \
            glfw/src/linux_joystick.c \
            glfw/src/monitor.c \
            glfw/src/null_init.c \
            glfw/src/null_joystick.c \
            glfw/src/null_monitor.c \
            glfw/src/null_window.c \
            glfw/src/osmesa_context.c \
            glfw/src/posix_thread.c \
            glfw/src/posix_time.c \
            glfw/src/vulkan.c \
            glfw/src/wgl_context.c \
            glfw/src/win32_init.c \
            glfw/src/win32_joystick.c \
            glfw/src/win32_monitor.c \
            glfw/src/win32_thread.c \
            glfw/src/win32_time.c \
            glfw/src/win32_window.c \
            glfw/src/window.c \
            glfw/src/wl_init.c \
            glfw/src/wl_monitor.c \
            glfw/src/wl_window.c \
            glfw/src/x11_init.c \
            glfw/src/x11_monitor.c \
            glfw/src/x11_window.c \
            glfw/src/xkb_unicode.c \
            main.cpp
    
    DISTFILES += \
        glfw/CMake/GenerateMappings.cmake \
        glfw/CMake/MacOSXBundleInfo.plist.in \
        glfw/CMake/i686-w64-mingw32-clang.cmake \
        glfw/CMake/i686-w64-mingw32.cmake \
        glfw/CMake/modules/FindEpollShim.cmake \
        glfw/CMake/modules/FindOSMesa.cmake \
        glfw/CMake/modules/FindWaylandProtocols.cmake \
        glfw/CMake/modules/FindXKBCommon.cmake \
        glfw/CMake/x86_64-w64-mingw32-clang.cmake \
        glfw/CMake/x86_64-w64-mingw32.cmake \
        glfw/CMakeLists.txt \
        glfw/cmake_uninstall.cmake.in \
        glfw/examples/CMakeLists.txt \
        glfw/examples/glfw.icns \
        glfw/examples/glfw.ico \
        glfw/examples/glfw.rc \
        glfw/src/CMakeLists.txt \
        glfw/src/cocoa_init.m \
        glfw/src/cocoa_joystick.m \
        glfw/src/cocoa_monitor.m \
        glfw/src/cocoa_window.m \
        glfw/src/glfw3.pc.in \
        glfw/src/glfw3Config.cmake.in \
        glfw/src/glfw_config.h.in \
        glfw/src/mappings.h.in \
        glfw/src/nsgl_context.m
    
    HEADERS += \
        glfw/deps/getopt.h \
        glfw/deps/glad/gl.h \
        glfw/deps/glad/khrplatform.h \
        glfw/deps/glad/vk_platform.h \
        glfw/deps/glad/vulkan.h \
        glfw/deps/linmath.h \
        glfw/deps/mingw/_mingw_dxhelper.h \
        glfw/deps/mingw/dinput.h \
        glfw/deps/mingw/xinput.h \
        glfw/deps/nuklear.h \
        glfw/deps/nuklear_glfw_gl2.h \
        glfw/deps/stb_image_write.h \
        glfw/deps/tinycthread.h \
        glfw/deps/vs2008/stdint.h \
        glfw/include/GLFW/glfw3.h \
        glfw/include/GLFW/glfw3native.h \
        glfw/src/cocoa_joystick.h \
        glfw/src/cocoa_platform.h \
        glfw/src/egl_context.h \
        glfw/src/glx_context.h \
        glfw/src/internal.h \
        glfw/src/linux_joystick.h \
        glfw/src/mappings.h \
        glfw/src/nsgl_context.h \
        glfw/src/null_joystick.h \
        glfw/src/null_platform.h \
        glfw/src/osmesa_context.h \
        glfw/src/posix_thread.h \
        glfw/src/posix_time.h \
        glfw/src/wgl_context.h \
        glfw/src/win32_joystick.h \
        glfw/src/win32_platform.h \
        glfw/src/wl_platform.h \
        glfw/src/x11_platform.h \
        glfw/src/xkb_unicode.h
    

    The Qt recognize the function so everything is good. I click on rebuilt all projects

    But when I try to built the program I get the following error:

    1.PNG

    And when I push the run button I get the a loads of errors

    2.PNG

    I use the code from link here.


  • Lifetime Qt Champion

    GLFW already provides a mean to build their library. Use it.



  • @SGaist

    And who to built it. I just find the way to use it in VS.


  • Lifetime Qt Champion

    Please, read the documentation of the libraries you want to use. It's explained right in their website.



  • @SGaist

    just another think link somebody says

    LIBS += -LC:\Qt\5.13.0\mingw73_64\lib\libQt5OpenGL.a -lopengl64
    

    It should work but it does not work for me



  • @SGaist

    Other thing is that at glfw\lib-mingw-w64 there is 3 files

    glfw3.dll
    libglfw3.a
    libglfw3dll.a

    these are libarys so I assume that I could include that so right click add external libary I add: libglfw3.a

    .pro file

    TEMPLATE = app
    CONFIG += console c++11
    CONFIG -= app_bundle
    CONFIG -= qt
    
    SOURCES += main.cpp
    
    
    INCLUDEPATH += C:\glfw\include
    
    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../glfw/lib-mingw-w64/ -lglfw3
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../glfw/lib-mingw-w64/ -lglfw3d
    else:unix: LIBS += -L$$PWD/../../../../glfw/lib-mingw-w64/ -lglfw3
    
    INCLUDEPATH += $$PWD/../../../../glfw/lib-mingw-w64
    DEPENDPATH += $$PWD/../../../../glfw/lib-mingw-w64
    

    So it looks good but when I try to build the program I get errors

    :-1: error: cannot find -lglfw3d
    :-1: error: collect2.exe: error: ld returned 1 exit status
    


  • @bence said in Qt GLFW and GLEW setup:

    error: cannot find -lglfw3d

    I don't know whether it would give rise to that error message, but I do not see either a .dll or a .a having that trailing d in its name. When using MSVC, debug libraries have a d on the end of their name, but I don't think that is the convention when using gcc/mingw. So are you using a linker line designed for MSVC with a build using MinGW?



  • @JonB said in Qt GLFW and GLEW setup:

    MSVC

    At C:\glfw\lib-vc2019 there is 3 files glfw3.dll glfw3.lib glfw3dll.lib

    At C:\glfw\lib-mingw-w64 there is 3 files glfw3.dll libglfw3.a libglfw3dll.a I am using this libary but I getting error I know that there is no d in name I add external libary I add libglfw3.a and I disable Mac and Linux platform and I also disable Add d suffix for debug version

    lib-mingw-w64 there is nothing related to MSVS I guess

    .pro

    TEMPLATE = app
    CONFIG += console c++11
    CONFIG -= app_bundle
    CONFIG -= qt
    
    INCLUDEPATH += C:\glfw\include
    
    win32: LIBS += -L$$PWD/../../../../glfw/lib-mingw-w64/ -lglfw3
    
    INCLUDEPATH += $$PWD/../../../../glfw/lib-mingw-w64
    DEPENDPATH += $$PWD/../../../../glfw/lib-mingw-w64
    
    SOURCES += main.cpp
    

    I get 32 errors

    undefined reference to `__imp_CreateDCW'
    undefined reference to `__imp_GetDeviceCaps'
    undefined reference to `__imp_DeleteDC'
    

    ....



  • @bence
    The 3 unreferenceds you list come from WinGDI. You would need to link against something link Gdi32.lib for these, which I suspect you are not doing. Or, I don't know, those leading __imp_s might indicate you are still somehow trying to link against MSVC libraries.

    In fact I even see a stackoverflow post covering this for GLFW MinGW link error, which you should read through and follow. It says MinGW has a library libgdi32.a for these.



  • @JonB But there is no Gdi32.lib file in the folder

    And if I just use the following code

    int main(void)
    {
        if (!glfwInit())
            return -1;
        return 0;
    }
    

    It still not woriking



  • @bence

    But there is no Gdi32.lib file in the folder

    Please read my post and act on it.



  • @JonB

    The only thing that I did is I add two file. I assume that I just have to do that.

    .pro file

    TEMPLATE = app
    CONFIG += console c++11
    CONFIG -= app_bundle
    CONFIG -= qt
    
    INCLUDEPATH += C:\glfw\include
    
    SOURCES += main.cpp
    
    win32: LIBS += -L$$PWD/../../../../glfw/lib-mingw-w64/ -lglfw3
    
    INCLUDEPATH += $$PWD/../../../../glfw/lib-mingw-w64
    DEPENDPATH += $$PWD/../../../../glfw/lib-mingw-w64
    
    
    win32: LIBS += -L$$PWD/../../../../MinGW/lib/ -lgdi32
    
    INCLUDEPATH += $$PWD/../../../../MinGW/include
    DEPENDPATH += $$PWD/../../../../MinGW/include
    
    win32: LIBS += -L$$PWD/../../../../MinGW/lib/ -lopengl32
    
    INCLUDEPATH += $$PWD/../../../../MinGW/include
    DEPENDPATH += $$PWD/../../../../MinGW/include
    

    1.PNG


  • Lifetime Qt Champion

    It looks like you are mixing two different MinGW installations.


Log in to reply