我正在尝试编译一些非常简单的代码,以确保在编写几行代码之前没有任何不可预见的链接器问题。
#include <iostream>
#include <GLFW/glfw3.h>
int main()
{
if (!glfwInit())
{
std::cout << "Glfw initialization failedn";
}
return 0;
}
但是,当我尝试构建时,我收到以下错误:"LNK1107无效或损坏的文件:无法在0x2E8读取"。我的项目是 x64,所以我假设我可能将错误的 dll 与 32 位架构链接,并在记事本中检查了它的 PE 标头。但是它是"PE d"d 表示它是 x64,L 表示它是 x86。我从关于SO的另一个问题中获得了一个提示。
我尝试在不同目录中链接多个opengl32.dll
:C:WindowsSysWOW64opengl32.dll
、C:WindowsSystem32opengl32.dll
和 C:WindowsWinSxSamd64_microsoft-windows-opengl_31bf3856ad364e35_10.0.14393.0_none_3c39618da01a51a8opengl32.dll
没有成功。我无法为我的特定情况找到任何答案,任何帮助将不胜感激。
在 Windows 上,您必须链接导出 .lib 库,而不是.dll库。导出库通常在编译.dll时生成,尽管 OpenGL 的 .lib 是独立于 opengl32 创建的 API 库.dll后者是视频驱动程序包的一部分。您还需要来自 GLFW 的 .lib。