Visual Studio 11 GLFW外部符号错误

Visual Studio 11 GLFW external symbol error

本文关键字:符号 错误 外部 GLFW Studio Visual      更新时间:2023-10-16

我使用的基本代码是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:UsersMICHAELdocumentsvisual studio 2012ProjectsConsoleApplication1DebugConsoleApplication1.exe : fatal error LNK1120: 7 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

glfw3.h在VC/include目录中。我还将glfw3.lib添加到了VC/lib文件夹中,并将glfw3-lib添加为链接器输入的附加依赖项,但我仍然会收到这些错误。

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

好的,经过大量的尝试和错误,我解决了它。

  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

这为我解决了问题。

如果有人打算使用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
    
  3. 同时使用相应的/MDd或/MTd编译器标志配置您的项目,并将其配置为在x64上生成。

  4. 构建。

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

我没有必要的声誉来评论(Michael)接受的答案,但我想注意的是,我让他的方法起作用了。我需要纠正的是将include和库目录切换到IncludePath/LibraryPath的其余部分之前,而不是之后。

除了将glfw3.lib和opengl32.lib添加到链接器依赖项之外,我还添加了gdi32.lib。这解决了我在使用glfw时在VS2019上的链接器问题。

#pragma comment(lib, "gdi32.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glfw3.lib")
相关文章: