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

问题描述

所以,基本上,我要问的是,如果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 Community中编程,在那边,.lib文件有效.............所以我开始我只是想确定一下这一点:“如果文件由同一编译器负责创建,则文件只能与特定的编译器一起使用”。

如果是这样,为什么不同的编译器会生成具有不同扩展名的库文件? 而且,不同的编译器编译是否不同?不同的编译器会创建不同的机器代码吗?

解决方法

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

,

.lib大概是无法使用的Visual Studio静态库 还是要用gcc

在评论之一中发现了这一点,这意味着Visual Studio使用.lib库,而gcc使用.a库

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...