轻松自如地学习OpenGL但有一个问题

Learning OpenGL with glew and freeglut; but there is an issue

本文关键字:OpenGL 有一个 问题 学习      更新时间:2023-10-16

我使用的是Visual Studio 2013,并使用nuget安装了" glow "answers"freeglut"。我正在遵循一个课程,以及这些安装说明:

http://in2gpu.com/2014/10/15/setting-up-opengl-with-visual-studio/

我确实弄糊涂了,但我仔细阅读了说明书。在构建我的简单项目的最后,我得到了一个错误:

1>链接:致命错误LNK1104:无法打开文件'Dependenciesfreeglut.obj'

#include <iostream>
#include "Dependenciesglewglew.h"
#include "Dependenciesfreeglutfreeglut.h"
int main(int argc, char **argv)
{
    return 0;
}

我读过其他网站关于安装库,但我只是感到困惑。任何帮助和深入讨论将非常有帮助。谢谢。

链接:致命错误LNK1104:无法打开文件'Dependenciesfreeglut。obj '

不应该是freeglut.obj,而应该是 freeglut.lib

另外,请确保,您正确地遵循了Now let’s prepare FreeGLUT部分教程中的所有步骤:他们非常清楚地解释了如何添加搜索库目录和链接器输入,但是Visual Studio报告缺少Dependenciesfreeglut.obj -仔细检查,您在项目属性-> Linker -> Input -> Additional Dependencies中有什么

不幸的是,我将不得不问一个明显的问题:是免费的。Lib位于它应该在哪里,你是否指向正确的目录?

你的错误显示Dependenciesfreeglut。但是如果您遵循教程,freeglut应该在Dependenciesfreeglut中。Windows上的另一个常见错误是使用包含空格的完整文件路径(C:....)我的文档…),但不把整个文件路径加引号。链接器会因此出错

编辑:我猜我被否决了,因为我没有注意到更明显的问题,你的链接器正在寻找一个免费的。不,你没有。确保将其命名为freeg鲁特.lib。

从概念上讲,这是发生的事情,这可能有助于您解决问题:当您编写cpp文件并对其进行编译时,它被转换为obj文件。编译器不需要知道所有的事情。你可以声明一个函数,它返回一个int,并接受一个bool作为参数,然后在你的代码中使用它,编译器会说:"好,如果你这么说的话。"

您的程序可能有几个cpp文件,因此也有几个obj文件。编译后,这些obj文件被链接在一起,形成可执行文件。如果这里出了什么问题(确实有!),那就是链接器错误。链接器说"好吧,你说你在使用这个函数。它在哪里?"

您已经获得了lib文件。在这种情况下,它们是静态库,本质上是一组obj文件的容器,这与您自己编写并编译所有的freeglut函数和类并没有什么不同。链接器想要链接它们。对于您编写和编译的代码,Visual Studio确保所有内容最终都在正确的文件夹中,并且看起来在正确的位置。编译的目标文件来自其他地方?它没有办法知道,所以你必须告诉VS两件事:库在哪个文件夹,库文件的名字是什么。然后链接器就知道该去哪里查找,以及它要查找的内容。

在某个地方,你把文件放在了错误的位置,或者告诉了VS错误的位置,或者错误的文件,或者一些组合。或者你已经做了一些事情,比如在文件路径中有空格而没有引号。另一个常见错误是混合使用不同的平台。X86(即32位)和x64目标文件是不同的,如果您的链接器正在寻找一种类型,它将无法理解另一种类型。你的下载提供了不同平台的库,VS让你选择一个目标平台。

相关文章: