OpenGL GLFW:对'glfwInit'的未定义引用

Mat*_*tin 4 c++ opengl mingw glfw

我知道这个问题已经被问很多在计算器上和其他网站上的时间; 在查看了这些资源后,我仍然茫然。

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

我遇到的问题与其他许多问题一样:我收到单个链接器错误:“未定义对'glfwInit'的引用。” 我尝试编译的代码是最简单的(在文件Test.cpp中)。

#include <iostream>
#include <GLFW/glfw3.h>
int main()
{
    std::cout << "hello world" << std::endl;
    glfwInit();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用一个简单的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
Run Code Online (Sandbox Code Playgroud)

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

我尝试过:
*使用GLFW的64位版本
*使用IDE(Eclipse,VS)
* GLFW未定义引用中的
建议* 什么是未定义引用/未解决的外部符号错误以及如何解决它中的建议?(交换链接参数顺序)
*在OpenGL中使用Eclipse CDT + MinGW + GLEW + GLFW的建议:未定义的引用
*尝试使用CMake自己编译库,但看不到在其中创建的任何.a,.lib或.dll文件过程。

请让我知道其他信息是否有帮助。

Meh*_*ala 6

g++ Test.cpp -lglfw -lGL -lm -lX11 -lpthread -lXi -lXrandr -ldl
Run Code Online (Sandbox Code Playgroud)

应该管用


Mat*_*tin 5

最后想通了,我的问题MANY小时后。

将libglfw3.a文件与glfw3.dll放在同一目录中(如果尝试动态链接)将使链接器混乱。如果动态链接,请将其删除-您只需要dll和/ include文件夹即可。

另外,添加

#define GLFW_DLL
Run Code Online (Sandbox Code Playgroud)

如果包含DLL,则在include语句上方。