ITADN

header file 'mutilple definition' in multil-file builds

#529Opengay-chicken 创建于 2025-11-28
questionGLglad2
G
gay-chickencommented
To solve the problem of 'multiple definition', I created a pre-included header file: ```c++ #pragma once // try this way #ifndef PREINCLUDE_HPP #define PREINCLUDE_HPP #ifndef GLAD_GL_IMPLEMENTION #define GLAD_GL_IMPLEMENTION #include "glad/gl.h" // only-header #endif #include "glfw/glfw3.h" #endif ``` In the `Launch.cpp` file, I need to use glad to load functions. ```c++ #include "preinclude.hpp" #include "Renderer.hpp" bool Init() { if (!gladLoadGL(glfwGetProcAddress)) return false; return true; } ``` Then, in the `Renderer.cpp` file, I need to use the relevant definitions from OpenGL. ```C++ #include "preinclude.hpp" void draw() { glBindVertex(vao); glDrawArray(GL_TRIANGLES, 0, 36); glBindVertex(0); } ``` No matter how I include 'glad', it always prompts me with 'multiple definition'. like: ``` [build] D:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\engine.dir/objects.a(texture_resource.cpp.obj):D:/Desktop/ResourcesSets/Code/Project/engine/include/glad/gl.h:17298: multiple definition of `glad_glWindowRectanglesEXT'; CMakeFiles\engine.dir/objects.a(application.cpp.obj):D:/Desktop/ResourcesSets/Code/Project/engine/include/glad/gl.h:17298: first defined here [build] D:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\engine.dir/objects.a(texture_resource.cpp.obj):D:/Desktop/ResourcesSets/Code/Project/engine/include/glad/gl.h:17299: multiple definition of `glad_glWriteMaskEXT'; CMakeFiles\engine.dir/objects.a(application.cpp.obj):D:/Desktop/ResourcesSets/Code/Project/engine/include/glad/gl.h:17299: first defined here ```
4 条评论