将 SOIL.lib 与 GCC 一起使用 - 添加符号时出错:无法识别文件格式
Posted
技术标签:
【中文标题】将 SOIL.lib 与 GCC 一起使用 - 添加符号时出错:无法识别文件格式【英文标题】:Using SOIL.lib with GCC - Error adding symbols: File format not recognised 【发布时间】:2020-05-06 22:59:54 【问题描述】:我最近一直在尝试将我的 Visual Studio OpenGL 项目转移到 VS Code,在 Windows 10 上通过 mingw-x64 使用 GCC。我一直在稳步推进这一切,因为我对 c++ 编程相当陌生,我遇到了一个我无法解决的错误。
使用以下命令构建时:
C:\Lib\mingw-w64\mingw64\bin\g++.exe -LC:/Lib/lib -IC:/Lib/include -g main.cpp -lglew32 -lglfw3 -lSOIL -lopengl32 -o build.exe
我收到了这个错误:
C:/Lib/lib/SOIL.lib: error adding symbols: File format not recognized
collect2.exe: error: ld returned 1 exit status
我使用的 SOIL.lib 在 Visual Studio 上运行良好,GCC 似乎对我使用的其他 .lib 文件没有任何抱怨。
似乎没有太多关于正在发生的事情的信息,我发现很多不同的人对不同的事情有相同的错误,我无法弄清楚这到底出了什么问题神秘的错误信息。有人可以帮忙吗?
【问题讨论】:
【参考方案1】:*.lib:添加符号时出错:文件格式无法识别。
是由您的链接器引起的问题。这背后的原因是该库属于其他架构,而不是您想要的。
这意味着您正在使用 mingw64\bin\g++.exe 编译器(mingw64 架构),并且库 SOIL.lib 是为您的主机系统架构构建的(这显然与 mingw64 架构不同)。
如果你想编译它,你必须得到为 mingw64 构建的 SOIL.lib。
【讨论】:
以上是关于将 SOIL.lib 与 GCC 一起使用 - 添加符号时出错:无法识别文件格式的主要内容,如果未能解决你的问题,请参考以下文章
将 Cilk Plus 与 MinGW-w64 (gcc 4.9.2) 一起使用?
我可以将 x86 程序集的 Intel 语法与 GCC 一起使用吗?
将 AVX 与 GCC 一起使用 - 缺少 avxintrin.h