【发布时间】: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.dll:C:\Windows\SysWOW64\opengl32.dll、C:\Windows\System32\opengl32.dll 和C:\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