Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is Visual Studio Trying to Link 'freeglutd.lib'?

I'm trying to compile an OpenGL program using Visual Studio 2013, but I get the following error:

Error 1 error LNK1104: cannot open file 'freeglutd.lib' ...

For reference, I have FreeGLUT installed and have configured VS to search the correct directories for the include files and library files. Indeed, VS recognises the GLUT include files just fine. I've also added opengl32.lib and freeglut.lib to the Additional Dependencies.

Why is VS looking for 'freeglutd.lib'? It's definitely not listed in the Additional Dependencies. I can solve the compilation error by renaming 'libglut.lib' to 'libglutd.lib' and removing the former from the dependencies, but I'm just curious why it's behaving this way.

Speaking of Additional Dependencies, is adding opengl32.lib actually necessary? I can compile my (very basic) program without it, but more than one person has said it's required, perhaps for older versions of Visual Studio?

like image 221
someguy Avatar asked Mar 17 '15 22:03

someguy


3 Answers

if you check the 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

so if you don't define NDEBUG, the linker will link to "freeglutd.lib", you can solve that by defining a NDEBUG in "PreprocessorDefinitions". Good luck!

like image 59
Steve Shi Avatar answered Nov 13 '22 08:11

Steve Shi


Possibly already answered: freeglut error LNK1104

Also two things to check for:

  • Are you building in debug or release mode? The d at the end of freeglutd.lib suggests that it's a library meant for debug builds
  • Try creating a new project from scratch, put some basic runnable code in it that uses freeGLUT and see if VS is linking properly. This will also verify if for some reason the project file of the previous project was corrupted (as @RobertHarvey suggested) or the problem is somewhere else
like image 26
rbaleksandar Avatar answered Nov 13 '22 07:11

rbaleksandar


Hey man I don't know if you're still having this error but here is a solution. Pretty much the "freeglutd.lib" has to do with debugging, hence the "d" on the end, so what I did was go into the:

Properties > C/C++ > Preprocessor > Preprocessor Definitions and type NDEBUG. Then OK and Apply.

What this does is in the "freeglut_std.h" there is a ifdef for NDEBUG that if it is defined then use "freeglut.lib" otherwise it's going to use the "freeglutd.lib". So by defining it in the Preprocessor Definitions, you are now using the "freeglut.lib". Hopefully this helps you out!

like image 1
KicoSVK Avatar answered Nov 13 '22 06:11

KicoSVK