【问题标题】:Cannot link with glfw3.lib c++无法与 glfw3.lib c++ 链接
【发布时间】:2021-11-01 19:01:56
【问题描述】:

我正在尝试使用g++在命令行上编译一个 c++ 文件
我有这个文件

#include <iostream>
#include "C:\Users\Shaurya\Documents\Opengl\Dependencies\GLFW\include\GLFW\glfw3.h"
using namespace std;

int main(){
    GLFWwindow* window;
    if(!glfwInit()){
        cout << "Window not initialized";
        return -1;
    }
    window = glfwCreateWindow(600,600,"OpenGL", NULL, NULL);
    if(!window){
        cout << "Window Not created";
        glfwTerminate();
    }   
    glfwMakeContextCurrent(window);
    while(glfwWindowShouldClose(window)){
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    glfwTerminate();
    return 0;
}

我运行这个命令
g++ -o Test main.cpp -L &lt;fullpath&gt;\Dependencies\GLFW\lib-vc2019 -lglfw3.lib
但这会引发巨大的错误

c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: mode i386pe
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../crt2.o
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/crtbegin.o
C:\Users\Shaurya\AppData\Local\Temp\ccxDP2Km.o
(c:/mingw/bin/../lib/gcc/mingw32/6.3.0/libstdc++.dll.a)d004332.o
.
.
(c:/mingw/bin/../lib/gcc/mingw32/6.3.0/libgcc_s.a)d000122.o
(c:/mingw/bin/../lib/gcc/mingw32/6.3.0/libgcc.a)_chkstk_ms.o
(c:/mingw/bin/../lib/gcc/mingw32/6.3.0/libgcc.a)_ctors.o
(c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingwex.a)fesetenv.o
.
.
.
(c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmoldname.a)dagwbt.o
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/crtend.o
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lglfw3.lib
collect2.exe: error: ld returned 1 exit status

我花了很多时间才意识到 -l 只是在寻找 .o 文件
那么我如何链接 .lib 文件?我从glfw.org 二进制文件。
我不想使用 Visual Studio 2019 来执行此操作,因为我的笔记本电脑很难运行它。

【问题讨论】:

  • 删除.lib 扩展,只使用-lglfw3 作为选项。如果库安装在标准路径(或添加了-L 的路径)中(对于 GCC 和 MinGW),则应该可以找到它。
  • @Gal 几天前我在 Visual Studio 中使用相同的文件并且它们正在工作
  • Visual Studio 使用与 GCC 不同的链接器。它们使用不同的库格式。
  • 然后你需要找到为MinGW构建的文件,并“安装”它。 MinGW 包管理器可能应该将它放在它的存储库中。
  • 如果您切换到使用 msys2 及其更新的 mingw 和包管理,您的任务会更轻松。 msys2.org glfw 是一个包:https://packages.msys2.org/package/mingw-w64-x86_64-glfw,64 位版本可以从 msys2 shell 使用此命令安装:pacman -S mingw-w64-x86_64-glfw

标签: c++ opengl g++ glfw .lib


【解决方案1】:

所以我解决了这个问题。首先我使用了错误的库。我获得了多个版本的库,并且我使用的是 VC 版本。但是当我使用 MinGW Version 时,它起作用了。
此外,我使用的是相对路径,而没有在它们之前输入 ./

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2014-05-06
    • 2020-02-18
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 2018-01-16
    相关资源
    最近更新 更多