Opengl VS2017在编译GFLW应用程序时引发许多链接器错误(LNK2001)

Opengl VS2017在编译GFLW应用程序时引发许多链接器错误(LNK2001),opengl,visual-studio-2017,glfw,Opengl,Visual Studio 2017,Glfw,我正在学习OpenGL。由于互联网上的许多教程都使用GFLW,我也决定使用GFLW。我从官方网站下载了二进制文件,提取了VS2017的include文件和lib文件(我使用的是VS2017)。在“我的项目设置”中设置其他路径,以便IDE知道在哪里可以找到include和lib。我链接到opengl32.lib、glew32.lib和glfw3.lib。我将项目配置设置为x86debug(并确保我放置了32位库,而不是64位库),并将运行时库设置为/MTd。我的项目设置看起来不错,一切都应该正常,

我正在学习OpenGL。由于互联网上的许多教程都使用GFLW,我也决定使用GFLW。我从官方网站下载了二进制文件,提取了VS2017的include文件和lib文件(我使用的是VS2017)。在“我的项目设置”中设置其他路径,以便IDE知道在哪里可以找到include和lib。我链接到opengl32.lib、glew32.lib和glfw3.lib。我将项目配置设置为x86debug(并确保我放置了32位库,而不是64位库),并将运行时库设置为/MTd。我的项目设置看起来不错,一切都应该正常,但我经常会遇到很多链接器错误(主要是LNK2001):


这是波兰语,但“nierozpoznany zewnętrzny符号”的意思是“无法识别的外部符号”。看起来libs有一些问题,但我不知道是什么-我正在链接到glfw3.lib(32位,vs2017),我的项目设置为debug,我设置了/MTd。我应该能够成功地编译这个项目。尝试了许多不同的配置,libs用于其他Visual Studio版本,但都不起作用-我总是会遇到一些链接器错误。有人能帮我吗?

试试/MDd而不是/MTd。看起来GLFW可能是用/MDd编译的,它必须匹配


我可以推断出这一点,因为链接到DLL时使用了
\uuu imp\uuu
符号(我不记得确切的细节)/MTd告诉链接器使用标准库的静态库版本,但glfw3.lib正在查找DLL版本。

尝试了链接中的解决方案,但没有一个有效。尝试了之后,又出现了一系列链接器错误。我目前正在安装VS 2019-由于VS 2017似乎不起任何作用,可能是IDE相关的问题,而升级到新版本将解决这个问题。
1>glfw3.lib(win32_joystick.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(wgl_context.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(egl_context.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(osmesa_context.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(win32_monitor.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(monitor.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(vulkan.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(win32_window.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(init.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(window.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(input.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(win32_init.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__calloc
1>glfw3.lib(window.obj) : error LNK2019: nierozpoznany zewnętrzny symbol __imp__strncpy przywołany w funkcji _glfwWindowHintString
1>glfw3.lib(input.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__strncpy
1>glfw3.lib(win32_joystick.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__strncpy
1>glfw3.lib(input.obj) : error LNK2019: nierozpoznany zewnętrzny symbol __imp__strcspn przywołany w funkcji _glfwUpdateGamepadMappings
1>glfw3.lib(input.obj) : error LNK2019: nierozpoznany zewnętrzny symbol __imp__strspn przywołany w funkcji _glfwUpdateGamepadMappings
1>glfw3.lib(input.obj) : error LNK2019: nierozpoznany zewnętrzny symbol __imp__realloc przywołany w funkcji _glfwUpdateGamepadMappings
1>glfw3.lib(win32_monitor.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__realloc
1>glfw3.lib(monitor.obj) : error LNK2001: nierozpoznany symbol zewnętrzny __imp__realloc
1>glfw3.lib(context.obj) : error LNK2019: nierozpoznany zewnętrzny symbol __imp____stdio_common_vsscanf przywołany w funkcji _sscanf
1>LIBCMTD.lib(exe_winmain.obj) : error LNK2019: nierozpoznany zewnętrzny symbol _WinMain@16 przywołany w funkcji "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
1>MSVCRT.lib(chandler4gs.obj) : error LNK2019: nierozpoznany zewnętrzny symbol __except_handler4_common przywołany w funkcji __except_handler4