OpenGL GLFW:未明确引用' glfwInit'

时间:2017-04-17 05:59:10

标签: c++ opengl mingw glfw

我意识到在StackOverflow和其他网站上已经多次多次次询问了这个问题;在审查了这些资源之后,我仍然处于亏损状态。

我只是想通过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;
}

我使用一个简单的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文件夹)

我试过了:
*使用GLFW的64位版本
*使用IDE(Eclipse,VS)
* GLFW Undefined References中的建议 * What is an undefined reference/unresolved external symbol error and how do I fix it?中的建议(交换参数顺序)
* OpenGL with Eclipse CDT + MinGW + GLEW + GLFW: Undefined References中的建议 *尝试使用CMake自己编译库,但没有看到在此过程中创建的任何.a,.lib或.dll文件。

如果有其他信息有用,请与我们联系。

4 个答案:

答案 0 :(得分:5)

最后几个小时后我发现了 MANY 的问题。

将libglfw3.a文件保留在与gl​​fw3.dll相同的目录中(如果尝试动态链接)将使链接器混淆。如果动态链接,请将其删除 - 您只需要dll和/ include文件夹。

另外,添加

#define GLFW_DLL
如果链接DLL,则在include语句上方

答案 1 :(得分:1)

如果您正确地将所有库与GCC链接,并且没有出现错误,但是它没有定义诸如“ glfwInit()”之类的函数,请检查您拥有的MinGW版本。如果您使用MinGW的86x版本,那么库也必须是86x。同样可能适用于64倍,但我尚未检查。

我整天试图解决该问题,这就是原因。 真的希望我能帮助到那个人。

答案 2 :(得分:1)

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

应该工作

答案 3 :(得分:0)

我在代码块中遇到了同样的问题,并通过首先链接libglfw3dll.a然后链接libglfw3.a来解决。否则会给出未定义的参考错误