trouble linking with glfw using premake and vs2019

  c++, glfw, premake

I am trying to build a simple project using premake 5. On win10 using visual studio 2019.
Premake is new for me, but I start simple : the only dependencies are glm ( headers only library), GLAD, and GLFW.
I included GLAD and GLFW as subprojects in my premake file.
Project generation goes fine.

glm is correctly included and usable.

When building :
GLAD and GLFW build correctly to their respective .lib files
But the "core" application fails with these linker errors :

3>GLFW.lib(init.obj) : error LNK2019: unresolved external symbol _glfwSelectPlatform referenced in function glfwInit
3>GLFW.lib(vulkan.obj) : error LNK2019: unresolved external symbol _glfwPlatformLoadModule referenced in function _glfwInitVulkan
3>GLFW.lib(vulkan.obj) : error LNK2019: unresolved external symbol _glfwPlatformFreeModule referenced in function _glfwInitVulkan
3>GLFW.lib(vulkan.obj) : error LNK2019: unresolved external symbol _glfwPlatformGetModuleSymbol referenced in function _glfwInitVulkan

I must be missing a config option when building glfw

Here is the premake lua script responsible for building GLFW :

project "GLFW"
kind "StaticLib"
language "C"

targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")

files
{
    "include/GLFW/glfw3.h",
    "include/GLFW/glfw3native.h",
    "src/glfw_config.h",
    "src/context.c",
    "src/init.c",
    "src/input.c",
    "src/monitor.c",
    "src/vulkan.c",
    "src/window.c"
}
filter "system:linux"
    pic "On"

    systemversion "latest"
    staticruntime "On"

    files
    {
        "src/x11_init.c",
        "src/x11_monitor.c",
        "src/x11_window.c",
        "src/xkb_unicode.c",
        "src/posix_time.c",
        "src/posix_thread.c",
        "src/glx_context.c",
        "src/egl_context.c",
        "src/osmesa_context.c",
        "src/linux_joystick.c"
    }

    defines
    {
        "_GLFW_X11"
        
    }

filter "system:windows"
    systemversion "latest"
    staticruntime "On"
    
    -- buildoptions{
    --     "/MT"
    -- }

    files
    {
        "src/win32_init.c",
        "src/win32_joystick.c",
        "src/win32_monitor.c",
        "src/win32_time.c",
        "src/win32_thread.c",
        "src/win32_window.c",
        "src/wgl_context.c",
        "src/egl_context.c",
        "src/osmesa_context.c"
    }

    defines 
    { 
        "_GLFW_WIN32",
        "_CRT_SECURE_NO_WARNINGS"

    }

filter "configurations:Debug"
    runtime "Debug"
    symbols "On"

filter "configurations:Release"
    runtime "Release"
    optimize "On"

Source: Windows Questions C++

2 thoughts on - trouble linking with glfw using premake and vs2019

  • Hii, from the premake file you left here, I supposed you watched TheCherno GameEngine Series (https://github.com/TheCherno/Hazel). I have the same issue.
    I don’t know how to solve that problem. If you find a way, let me know.
    A workaraound for me was to clone the repo and use
    `git rebase –interactive 6815f07cd23eb5cd55cfe6fccaec5aefdc8169e8^`
    to go back to the glfw version of that time, copy & paste the submodule files from there into my project.

LEAVE A COMMENT