将 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 一起使用吗?

如何将 GCC LTO 与不同优化的目标文件一起使用?

将 AVX 与 GCC 一起使用 - 缺少 avxintrin.h

更新 ubuntu 10.4 后无法将 errno.h 与 gcc/g++ 一起使用

Emscripten - 如何将我的makefile与emcc一起使用而不是gcc?