【问题标题】:Unresolved external symbol _glfwInit due to 32-bit/64-bit mismatch由于 32 位/64 位不匹配,无法解析外部符号 _glfwInit
【发布时间】:2018-12-10 16:29:32
【问题描述】:

如何以 Visual Studio 2015 可以实际看到的方式链接库?

这是我的文件夹的一些屏幕截图: glfw3glfw3/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 ==========

【问题讨论】:

标签: c++ visual-studio-2015 linker-errors glfw


【解决方案1】:

您写道您试图链接“这些文件夹”,而实际上,您需要两个独立的东西才能使用静态库中的函数。

  1. 使用正确的头文件以便编译成功。从您引用的错误来看,编译进展顺利。程序知道有一个名为 _glfwInit 的外部函数。
  2. 链接到特定库(.lib 文件)。看起来您放置了文件夹的路径,而不是 .lib 文件的完整路径。

在链接器 => 输入 => 附加依赖项下,放置 gfw3.lib 文件的完整路径。

【讨论】:

    【解决方案2】:

    我在关注 learnopengl.com 时遇到了同样的问题,问题是您需要再次使用 cmake 重建 glfw 库,
    但是这一次,当您为此项目选择 Visual Studio 2015 或其他任何生成器时,您还必须选择:OPTIONAL PLATFORM FOR GENERATOR -> x64
    当您在 Visual Studio构建 glfw 并且出现的平台是 x64

    时,您可以确保一切正常

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      相关资源
      最近更新 更多