Visual Studio 11 GLFW外部符号错误

Mic*_*ael 4 c++ opengl linker glfw visual-studio-2012

我使用的基本代码是http://www.glfw.org/documentation.html中的示例

我得到这个输出:

1>------ Build started: Project: ConsoleApplication1, Configuration: Debug Win32 ------
1>  Quelle.cpp
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwInit referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwTerminate referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwCreateWindow referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwWindowShouldClose referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwPollEvents referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwMakeContextCurrent referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwSwapBuffers referenced in function _main
1>C:\Users\MICHAEL\documents\visual studio 2012\Projects\ConsoleApplication1\Debug\ConsoleApplication1.exe : fatal error LNK1120: 7 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

glfw3.h位于VC/include目录中.我还将glfw3.lib添加到VC/lib文件夹中,并添加了glfw3.lib作为链接器输入的附加依赖项,但我仍然遇到此错误.

任何想法为什么?我使用了预编译的二进制文件(支持MSVC2012和64x)http://www.glfw.org/download.html

Mic*_*ael 22

好吧,经过非常多的试验和错误,我解决了它.

  1. 使用32位二进制文​​件
  2. 右键单击项目 - >属性 - > VC++
  3. 包含目录:C:\ Users\MICHAEL\Desktop\glfw-3.0.3.bin.WIN32\include; $(IncludePath)
  4. 库目录:C:\ Users\MICHAEL\Desktop\glfw-3.0.3.bin.WIN32\lib-msvc110; $(LibraryPath)
  5. 链接器 - >输入 - >附加依赖项添加
  6. glfw3.lib和opengl32.lib

这解决了我.


小智 6

如果有人打算使用 64 位版本的 GLFW,这是我的解决方案:

  1. 从 github 获取 GFLW 源代码。
  2. 使用 CMake 生成 64 位 Visual Studio sln。
  3. 使用适当的设置配置 glfw:

如果是动态库:

项目 -> 配置 -> C/C++ -> 代码生成 -> 运行库 -> 多线程调试 DLL (/MDd)

如果是静态库:

项目 -> 配置 -> C/C++ -> 代码生成 -> 运行库 -> 多线程调试 (/MTd)

  1. 构建 glfw 项目。

  2. 在您的项目中链接以下二进制文件:

     glfw3.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;glfw3.lib
    
    Run Code Online (Sandbox Code Playgroud)
  3. 还可以使用相应的 /MDd 或 /MTd 编译器标志配置您的项目,并将其配置为在 x64 上构建。

  4. 建造。


小智 5

确保根据您使用的版本将您的平台设置为 x64 或 32。我尝试使用 64 位平台,但一直遇到问题,直到我注意到 Visual Studio 中的活动平台是 win32。转到配置管理器并确保其设置为 64