【问题标题】:LNK1107 opengl32.dll in Visual Studio Express 2015Visual Studio Express 2015 中的 LNK1107 opengl32.dll
【发布时间】:2017-05-28 07:24:44
【问题描述】:

我正在尝试编译一些非常简单的代码,以确保在编写几行代码之前没有任何不可预见的链接器问题。

#include <iostream>
#include <GLFW/glfw3.h>

int main()
{
    if (!glfwInit())
    {
        std::cout << "Glfw initialization failed\n";
    }

    return 0;
}

但是,当我尝试构建时出现以下错误:“LNK1107 文件无效或损坏:无法在 0x2E8 读取”。我的项目是 x64,所以我假设我将错误的 dll 与 32 位架构链接并在记事本中检查了它的 PE 标头。但是它是“PE d”,d 表示它是 x64,L 表示它是 x86。我从另一个关于 SO 的问题中得到的提示。

我尝试在不同目录中链接多个opengl32.dllC:\Windows\SysWOW64\opengl32.dllC:\Windows\System32\opengl32.dllC:\Windows\WinSxS\amd64_microsoft-windows-opengl_31bf3856ad364e35_10.0.14393.0_none_3c39618da01a51a8\opengl32.dll

没有成功。我无法为我的特定案例找到任何答案,我们将不胜感激。

【问题讨论】:

  • 你应该链接到.lib文件,而不是.dll文件。
  • @AlgirdasPreidžius 我在哪里可以找到opengl32.lib 或类似的?
  • 我不知道。我从没用过opengl。
  • @EdwardSnow 安装 Windows 10 SDK,然后在您的项目属性中,C++ Linker,输入,在文本字段中添加小写字母“opengl32.lib”。

标签: c++ visual-studio dll visual-studio-2015 visual-studio-express


【解决方案1】:

在 Windows 上,您必须链接导出的 .lib 库,而不是 .dll。导出库通常在编译 .dll 时生成,尽管 OpenGL 的 .lib 是独立于 opengl32.dll 创建的 API 库,opengl32.dll 是视频驱动程序包的一部分。您还需要来自 GLFW 的 .lib。

【讨论】:

  • 我在我的操作系统中没有看到可以找到这个库的任何地方。你知道我在哪里可以找到我需要的吗?
  • @Edward Snow 它在 SDK 中。 OpenGL32.Lib。设置了哪些环境变量。
猜你喜欢
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多