【发布时间】:2018-12-10 16:29:32
【问题描述】:
如何以 Visual Studio 2015 可以实际看到的方式链接库?
这是我的文件夹的一些屏幕截图: glfw3、glfw3/include/glfw/、glfw3/lib
我尝试将这些文件夹链接到 Visual Studio,在“vc++ 目录 => 包含/库目录如下:include,library
也直接链接到我的项目,在链接器=>输入=>additional dependencies
对我来说,一切似乎都是正确的(这就是我正在关注的教程,learnopengl.com 中的内容)
注意:我也对 GLAD 库做同样的事情,它有一个 .c 文件,我直接放入我的源代码中,以及与 GLFW 相同的链接方式的头文件。
但尽管尝试运行此代码:
#include <glad/glad.h>
#include <GLFW/glfw3.h>
int main() {
glfwInit();
return 0;
}
它总是会返回这个错误,或者类似的:
1>------ Build started: Project: opengl_test, Configuration: Debug Win32 ------
1> main.cpp
1>main.obj : error LNK2019: unresolved external symbol _glfwInit referenced in function _main
1>C:\Users\Honza\Desktop\C++ programs\lib\glfw3\lib\glfw3.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'X86'
1>c:\users\honza\documents\visual studio 2015\Projects\opengl_test\Debug\opengl_test.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我猜我链接库的方式有问题。如果必须,我愿意从字面上重新安装 Visual Studio,请给我一些可能的解决方案。我想开始学习 opengl,但是所有这些带有链接库的爵士乐让我感到沮丧和困惑。
编辑:这里的问题是我使用 64 位 GLFW 二进制文件而不是 32 位二进制文件,并以 32 位编译。我已经解决了这个问题,现在我得到了更多的错误:
1>------ Build started: Project: opengl_test, Configuration: Debug Win32 ------
1>libglfw3.a(init.c.obj) : error LNK2019: unresolved external symbol ___chkstk_ms referenced in function __glfwInputError
1>libglfw3.a(init.c.obj) : error LNK2019: unresolved external symbol _vsnprintf referenced in function __glfwInputError
1>MSVCRTD.lib(vsnprintf.obj) : error LNK2001: unresolved external symbol _vsnprintf
1>libglfw3.a(context.c.obj) : error LNK2019: unresolved external symbol _sscanf referenced in function __glfwRefreshContextAttribs
1>MSVCRTD.lib(vsnprintf.obj) : error LNK2001: unresolved external symbol __vsnprintf
1>C:\Users\Honza\Documents\Visual Studio 2015\Projects\opengl_test\Debug\opengl_test.exe : fatal error LNK1120: 4 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
【问题讨论】:
-
library machine type 'x64' conflicts with target machine type 'X86'你确定你的目标是x64? -
我不知道这是什么意思。
-
glfw 库为 64 位时,您正在以 32 位编译。没用。
-
尽管我假设我下载了 32 位 glfw 二进制文件,但我再次下载了它们,这次出现了更多错误...pastebin.com/4r3qPeCJ
标签: c++ visual-studio-2015 linker-errors glfw