OpenGL GLFW:未定义对‘glfwInit’的引用

vjhs03f7  于 2022-09-26  发布在  其他
关注(0)|答案(4)|浏览(174)

我只是想让OpenGL在我的机器(64位Windows 7)上运行GLFW。

我收到了唯一的链接器错误:

undefined reference to 'glfwInit'.

我试图编译的代码是最简单的(在文件Test.cpp中)。


# include <iostream>

# include <GLFW/glfw3.h>

int main()
{
    std::cout << "hello world" << std::endl;
    glfwInit();
    return 0;
}

我正在使用一个简单的Makefile来尝试编译:

Test: Test.o
    g++ -o Test  -L./lib -lglew32 -lglfw3 -lopengl32 -lglu32 -lgdi32 Test.o

Test.o: Test.cpp
    g++ -I./include -c Test.cpp

补充资料:

  • 使用g++编译(MinGW32)
  • lib文件夹包含glfw3.dll、libglfw3.a和libglfw3dll.a(从GLFW网站下载的Win32版本-Windows预编译库)
  • Include文件夹包含一个名为GLFW的文件夹,其中包含glfw3.h和glfw3native.h(来自下载的GLFW-Include文件夹)

我试过了:

kninwzqo

kninwzqo1#

几个小时后,我终于解决了我的问题。

将libglfw3.a文件留在与glfw3.dll相同的目录中(如果尝试动态链接)会混淆链接器。如果动态链接,则将其删除-您所需要的只是DLL和/Include文件夹。

另外,添加


# define GLFW_DLL

如果链接到DLL,则位于INCLUDE语句上方。

myzjeezk

myzjeezk2#

g++ Test.cpp -lglfw -lGL -lm -lX11 -lpthread -lXi -lXrandr -ldl

应该行得通

hmmo2u0o

hmmo2u0o3#

如果您正确地将所有库与GCC链接在一起,并且没有出现错误,但它只是没有定义像“glfwInit()”这样的函数,请检查您有什么版本的MinGW。如果你使用86x版本的MinGW,那么库也必须是86x。64x可能也是这样,但我还没有检查。

要检查MinGW的版本,请在命令行中使用gcc --version命令。

我一整天都在试图解决这个问题,这就是原因。我真的希望我能帮到别人。

wfveoks0

wfveoks04#

我不得不将glfw添加到目标链接库

TARGET_LINK_LIBRARY(可执行名称glfw)

相关问题