在Windows 8上使用Eclipse + MinGW的GLFW未定义引用

时间:2014-11-12 03:36:41

标签: c++ eclipse windows-8 glfw

我正在尝试设置GLFW。我在Windows 8.1上使用Eclipse CDT

我已下载了GLFW二进制文件,并尝试在此处运行示例代码http://www.glfw.org/documentation.html

到目前为止,我已经包含了glfw标头,并且我正在静态链接glfw3,opengl32和gdi32(按此顺序)。

编译器正在运行以下命令

g++ "-IC:\\Libraries\\GLFW3\\include" -O0 -g3 -Wall -c -fmessage-length=0 -o main.o "..\\main.cpp" 
g++ "-LC:\\Libraries\\GLFW3\\lib-mingw" -o HelloGLFW3.exe main.o -lglfw3 -lopengl32 -lgdi32

我收到错误"未定义的引用..."对于每个GLFW功能。

我无法弄清楚我做错了什么。我已经完成了谷歌搜索,并在Stack Overflow上提出了一些类似的问题,但没有一个能解决问题。最常见的建议是重新排序链接顺序,但据我所知,顺序是正确的,我尝试了以防万一,但它没有任何区别。

任何人都可以提供有关如何正确链接的说明吗?

编辑:我已尝试使用32位和64位glfw二进制文件(我最初的尝试是使用64位二进制文​​件,但Google表示尝试链接32位和64位程序可能会出现问题 - 来自我可以告诉我的MinGW版本只能产生32位输出。这些是产生的错误:

64位二进制文​​件:

undefined reference to `glfwCreateWindow'   main.cpp    /HelloGLFW3 line 12 C/C++ Problem
undefined reference to `glfwInit'
undefined reference to `glfwMakeContextCurrent'
undefined reference to `glfwPollEvents'
undefined reference to `glfwSwapBuffers'
undefined reference to `glfwTerminate'
undefined reference to `glfwTerminate'
undefined reference to `glfwWindowShouldClose'

32位二进制文​​件:

undefined reference to `_imp__CreateDCW@16' HelloGLFW3      line 0, external location: C:\Libraries\GLFW3\i386\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c    C/C++ Problem
undefined reference to `_imp__CreateDCW@16'
undefined reference to `_imp__DeleteDC@4'
undefined reference to `_imp__DeleteDC@4'
undefined reference to `_imp__DescribePixelFormat@16'
undefined reference to `_imp__GetDeviceCaps@8'
undefined reference to `_imp__GetDeviceGammaRamp@8'
undefined reference to `_imp__SetDeviceGammaRamp@8'
undefined reference to `_imp__SetPixelFormat@12'
undefined reference to `_imp__SwapBuffers@4'

1 个答案:

答案 0 :(得分:0)

GLFW提供64位和32位二进制版本。编译程序时,可以生成64位输出或32位输出。您的程序必须与您正在使用的库兼容。

这意味着仅仅因为你拥有64位计算机并不意味着你需要64位二进制文​​件。另外,检查编译器是否输出您认为输出的内容也是个好主意。