GNU GCC 编译器是否只接受“<filename>.a”文件作为库?

Do GNU GCC compilers only accept "<filename>.a" files as libraries?

所以,基本上我要问的是,如果 GNU GCC 编译器只将“.a”文件识别为库文件,我问这个的原因是,我在我的代码块 cpp 项目中链接了 3 个库文件,其中两个库文件具有“.a”扩展名,最后一个具有“.lib”扩展名。当我尝试构建项目时,这是我得到的错误:

-------------- Build: Debug in OpenGl_GLFW (compiler: GNU GCC Compiler)---------------

g++.exe -Wall -g -Idependencies\include -Idependencies\include
-IC:\Users\Mubarak\Documents\Programming\Cpp\OpenGl_GLFW\dependencies\include -c C:\Users\Mubarak\Documents\Programming\Cpp\OpenGl_GLFW\dependencies\lib\glew32s.lib -o obj\Debug\dependencies\lib\glew32s.o
g++.exe -Ldependencies\lib -Ldependencies\lib -LC:\Users\Mubarak\Documents\Programming\Cpp\OpenGl_GLFW\dependencies\lib -o bin\Debug\OpenGl_GLFW.exe obj\Debug\dependencies\lib\glew32s.o dependencies\lib\libglfw3.a dependencies\lib\libglfw3dll.a obj\Debug\src\main.o   -lopengl32.a dependencies\lib\glew32s.lib dependencies\lib\libglfw3.a -lopengl32.a dependencies\lib\glew32s.lib dependencies\lib\libglfw3.a
g++.exe: warning: C:\Users\Mubarak\Documents\Programming\Cpp\OpenGl_GLFW\dependencies\lib\glew32s.lib:
linker input file unused because linking not done
g++.exe: error: obj\Debug\dependencies\lib\glew32s.o: No such file or directory
Process terminated with status 1 (0 minute(s), 0 second(s)) 1
error(s), 1 warning(s) (0 minute(s), 0 second(s))

看来.lib库文件有问题,我开始在visual studio社区编程,那边的.lib文件可以用...... . 所以我开始意识到“库文件只适用于特定的编译器,如果同一个编译器负责创建它们”我只是想确定这一点。

如果是这样,为什么不同的编译器会产生不同扩展名的库文件? 而且,不同的编译器编译方式不同吗?不同的编译器会创建不同的机器码吗?

".lib" 库是动态类型,编译器假定将它们插入代码不是程序员的工作。这些库以及“.dll”在编译过程中由编译器本身插入。您还可以使用其他扩展名,例如“.h”。

the .lib is presumably a visual studio static library which wont work with gcc anyway

在其中一条评论中发现了这一点,这意味着,visual studio 使用了 .lib 库,而 gcc 使用了 .a 库