Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Windows 8上使用Eclipse+MinGW的GLFW未定义引用_C++_Eclipse_Windows 8_Glfw - Fatal编程技术网

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

C++ 在Windows 8上使用Eclipse+MinGW的GLFW未定义引用,c++,eclipse,windows-8,glfw,C++,Eclipse,Windows 8,Glfw,我正在尝试建立GLFW。我在Windows8.1上的EclipseCDT中工作 我已经下载了GLFW二进制文件,并尝试在这里运行示例代码 到目前为止,我已经包括了glfw头,并且我正在以该顺序静态链接glfw3、opengl32和gdi32 编译器正在运行以下命令 g++ "-IC:\\Libraries\\GLFW3\\include" -O0 -g3 -Wall -c -fmessage-length=0 -o main.o "..\\main.cpp" g++ "-LC:\\Librar

我正在尝试建立GLFW。我在Windows8.1上的EclipseCDT中工作

我已经下载了GLFW二进制文件,并尝试在这里运行示例代码

到目前为止,我已经包括了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函数

我不知道我做错了什么。我做了一个谷歌搜索,有一些类似的问题问堆栈溢出,但他们没有解决问题。最常见的建议是重新排序链接顺序,但据我所知,顺序是正确的,我试过以防万一,但没有任何区别

有人能提供如何正确链接的说明吗

编辑:我曾尝试使用32位和64位glfw二进制文件,我最初的尝试是使用64位二进制文件,但谷歌表示,尝试链接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'
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'
32位二进制文件:

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'
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'

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


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

我想您已经将下载的二进制文件放入了lib mingw文件夹,对吗?你到底下载了哪个软件包?我下载了64位的windows二进制文件。它附带了mingw和msvc编译器的include文件和库;是的,这些库在lib mingw文件夹中。好的,我也下载了它们并查看了结构。你能发布一条未解析的引用错误消息吗,这样我就可以看到他试图解析哪种符号了?嗯,刚刚重新安装了MinGW,并编写了测试代码,使用你发布的命令行调用glfwInit和glfwCreateWindow。很好。你试过删除*.a文件和DLL链接吗?我是个白痴,当我切换到GLFW的32位二进制文件时,我意外地删除了-lgdi32标记,这就是导致链接错误的原因。最初的问题是,我使用的是64位GLFW库,GNU编译器生成的是32位程序输出。谢谢你的帮助。