我尝试使用Visual Studio 2013编译OpenGL程序,但是我收到以下错误:
错误1错误LNK1104:无法打开文件 ' freeglutd.lib' ...
作为参考,我安装了FreeGLUT并配置了VS来搜索包含文件和库文件的正确目录。实际上,VS认识到GLUT包含文件就好了。我还将 opengl32.lib 和 freeglut.lib 添加到附加依赖项。
VS为什么要寻找' freeglutd.lib'?它绝对没有在附加依赖项中列出。我可以通过重命名< libglut.lib'来解决编译错误。到' libglutd.lib'并将前者从依赖中移除,但我只是好奇为什么它会这样做。
说到额外的依赖关系,是否真的需要添加opengl32.lib?我可以在没有它的情况下编译我的(非常基本的)程序,但是不止一个人说它可能需要,可能是旧版本的Visual Studio?
答案 0 :(得分:5)
如果你检查freeglut_std.h(freeglut V3.0):
/* Link with Win32 shared freeglut lib */
# if FREEGLUT_LIB_PRAGMAS
# ifdef NDEBUG
# pragma comment (lib, "freeglut.lib")
# else
# pragma comment (lib, "freeglutd.lib")
# endif
# endif
所以如果你没有定义NDEBUG,链接器将链接到“freeglutd.lib”, 你可以通过在“PreprocessorDefinitions”中定义一个NDEBUG来解决这个问题。 祝你好运!
答案 1 :(得分:1)
可能已经回答:freeglut error LNK1104
还有两件事需要检查:
答案 2 :(得分:0)
我通过在调试模式下从生成的CMake soluton编译freeglut和freeglut_static解决了这个问题 - 在lib / Debug目录中创建了freeglutd。您可以将此目录放入lib路径,然后它就可以了!
答案 3 :(得分:0)
嘿,我不知道你是否还有这个错误,但这是一个解决方案。几乎“freeglutd.lib”与调试有关,因此最后是“d”,所以我做的是进入:
属性> C / C ++>预处理器>预处理器定义并键入NDEBUG。然后确定和应用。
这样做在“freeglut_std.h”中有一个NDEBUG的ifdef,如果它被定义,则使用“freeglut.lib”,否则它将使用“freeglutd.lib”。因此,通过在预处理器定义中定义它,您现在使用“freeglut.lib”。希望这可以帮助你!