Static Linking in GCC with VSCode not working, Giving Error: "undefined reference to glfwInit"

Viewed 16

I am using GCC compiler with VSCode on Windows 10 for C Programming. The code is an example code from the website of GLFW. I want to static link the GLFW library so I put it with the working directory and it doesn't give a linking error, which means the linker has found the libglfw3.a file and object file is also created in temp file, but it gave this error: undefined reference to `glfwInit'

Here is the task.json file code:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe build active file",
            "command": "C:/MinGW/bin/gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "C:/MinGW/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

Here is the c_cpp_properties.json file:

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "${vcpkgRoot}/x64-windows/include",
                "${vcpkgRoot}/x86-windows/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "8.1",
            "compilerPath": "C:/MinGW/bin/gcc.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "windows-gcc-x86"
        }
    ],
    "version": 4
}

Here is the C program:

#include <stdio.h>
#include <conio.h>
#include "GLFW/glfw3.h"

int main(void)
{
    GLFWwindow *window;

    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);

    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

These are the errors:

Starting build...
C:/MinGW/bin/gcc.exe -fdiagnostics-color=always -g C:\Users\RAKESH\VSCodeProject\C\LetUsC\Chapter-20\Example-1.c -o C:\Users\RAKESH\VSCodeProject\C\LetUsC\Chapter-20\Example-1.exe
C:\Users\RAKESH\AppData\Local\Temp\ccgvV8hh.o: In function `main':
C:/Users/RAKESH/VSCodeProject/C/LetUsC/Chapter-20/Example-1.c:10: undefined reference to `glfwInit'
C:/Users/RAKESH/VSCodeProject/C/LetUsC/Chapter-20/Example-1.c:14: undefined reference to `glfwCreateWindow'
C:/Users/RAKESH/VSCodeProject/C/LetUsC/Chapter-20/Example-1.c:17: undefined reference to `glfwTerminate'
C:/Users/RAKESH/VSCodeProject/C/LetUsC/Chapter-20/Example-1.c:22: undefined reference to `glfwMakeContextCurrent'
C:/Users/RAKESH/VSCodeProject/C/LetUsC/Chapter-20/Example-1.c:28: undefined reference to `_imp__glClear@4'
C:/Users/RAKESH/VSCodeProject/C/LetUsC/Chapter-20/Example-1.c:31: undefined reference to `glfwSwapBuffers'
C:/Users/RAKESH/VSCodeProject/C/LetUsC/Chapter-20/Example-1.c:34: undefined reference to `glfwPollEvents'
C:/Users/RAKESH/VSCodeProject/C/LetUsC/Chapter-20/Example-1.c:25: undefined reference to `glfwWindowShouldClose'
C:/Users/RAKESH/VSCodeProject/C/LetUsC/Chapter-20/Example-1.c:37: undefined reference to `glfwTerminate'
collect2.exe: error: ld returned 1 exit status

I have no experience with linking libraries in VSCode but this error is not about linking files but rather linker is not able to find the referenced function definition and I don't know how can I solve. Anyone please help.

0 Answers
Related