error LNK2019: unresolved external symbol in MS VS Community 2013

I was following this tutorial. https://www.youtube.com/watch?v=j-55D2rsCSE @ 9:20 he gets the exact same errors I'm getting but then instead of explaining how to fix it he just cuts out the part where he solves it. He says "it was a quite simple error it was a linker library error". Well its not quite so simple for me, I've been trying to figure out what the heck to do for days now. Any help would be appreciated. Thanks guys.
Last edited on
There are many cause of error LNK2019: unresolved external symbol in Visual Studio as you would see here
https://msdn.microsoft.com/en-us/library/799kze2z(v=vs.80).aspx

-The most common is a function declaration but no definition.
-When you have everything #included, an unresolved external symbol is often a missing * or & in the declaration or definition of a function.

The video does not explain much if you have not watched it completely.

Do a Google search and you will surely find you type.
Yea i wouldn't have come here if i hadn't done many many many many many google searches first.
Ill go ahead and tell you, from what research ive done i think its because the linker doesnt know where to find the non standard library. (w/e the heck that means) or something like that. but no luck in finding how to fix that particular problem.
Last edited on
Typically you need to do 5 things to include a library in your project:

1) Add #include statements necessary files with declarations/interfaces, e.g.:

#include "library.h"
2) Add an include directory for the compiler to look into

-> Configuration Properties/VC++ Directories/Include Directories (click and edit, add a new entry)

3) Add a library directory for *.lib files:

-> Configuration Properties/VC++ Directories/Library Directories (click and edit, add a new entry)

4) Link the lib's *.lib files

-> Configuration Properties/Linker/Input/Additional Dependencies (e.g.: library.lib;

5) Place *.dll files either:

-> in the directory you'll be opening your final executable from or into Windows/system32
I almost didn't help because YouTube.

It means that you didn't link to the 'GLFW' library. This is a separate package from straight OpenGL that you download from here: http://www.glfw.org/download.html

I didn't watch the video and I won't watch it either because I that it will just make me angry. So I don't know how much he's told you to do so far, obviously not enough.
thanks for the reply shadowCODE.

There doesn't appear to be a single .lib or .dll file anywhere in this http://www.glfw.org/ library.
You have to build it OP. This is not an uncommon requirement. Tell us what platform you are using and we can walk you through the basics.

EDIT: I just built this after seeing your post, so like 30 mins ago. This is one of the easier ones.
Last edited on
thanks computergeek.

I'm using visual studio community 2013 on a 64 bit windows machine.
Last edited on
Sorry OP, I thought I'd have more time this weekend. Any who it turns out that this library does in fact have pre-compiled binaries for you, so that's nice because the make files all seem to favor versions of MingW. So go here: http://www.glfw.org/download.html and click on the button that says "64-bit Windows Binaries". The stuff you'll want to link to is in the folder labeled 'lib-vc2013'.

EDIT: Direct Link for the lazy http://sourceforge.net/projects/glfw/files/glfw/3.1.1/glfw-3.1.1.bin.WIN64.zip/download
Last edited on
Hey man no problem. You dont owe me anything. Im just so glad for the help. So:

I downloaded the 64 bit binaries. Extracted "glfw-3.1.1.bin.WIN64" right to "C:\Users\User\Documents\Visual Studio 2013\Projects\Project3\Project3" next to my main.cpp.

I added "#include "glfw-3.1.1.bin.WIN64\include\GLFW\glfw3.h"" to the top of my main.cpp.

I went to "Project3 Property Pages -> Configuration Properties -> VC++ Directories -> Include Directories -> edit" and tried adding both "C:\Users\Aaron\Documents\Visual Studio 2013\Projects\Project3\Project3\glfw-3.1.1.bin.WIN64\include\GLFW" and "C:\Users\Aaron\Documents\Visual Studio 2013\Projects\Project3\Project3\glfw-3.1.1.bin.WIN64\include" because shadowCODE's instructions were not perfectly precise on this point.

I went to "Project3 Property Pages -> Configuration Properties -> VC++ Directories -> Library Directories" and tried adding all three of the options "C:\Users\User\Documents\Visual Studio 2013\Projects\Project3\Project3\glfw-3.1.1.bin.WIN64\lib-mingw" and "C:\Users\User\Documents\Visual Studio 2013\Projects\Project3\Project3\glfw-3.1.1.bin.WIN64\lib-vc2012" and "C:\Users\User\Documents\Visual Studio 2013\Projects\Project3\Project3\glfw-3.1.1.bin.WIN64\lib-vc2013". I suspect the last one is right but i tried it first and it didnt work so i tried all of them.

I went to "Project3 Property Pages -> Configuration Properties -> Linker -> Input -> Additional Dependencies" and tried adding "libglfw3.a" and "glfw3.lib" and "glfw3dll.lib".

I copied and pasted "C:\Users\User\Documents\Visual Studio 2013\Projects\Project3\Project3\glfw-3.1.1.bin.WIN64\lib-vc2013\glfw3.dll" to "C:\Users\User\Documents\Visual Studio 2013\Projects\Project3\Debug" where visual studio is building the project by default.

Obviously i didnt try all the complications at first. I made it simple and then tried all the extra stuff when simple didnt work. I tried to try all of the possible combinations of all of the things i described up there but im sure i missed some.

Ive tried programming and quit like a half dozen times now because i always run into this giant wall of difficulty that is compiling and using non standard libraries. I feel like if i can just scale this wall one time it might open the floodgates. I really do love programming its just so frustrating that i never seem to be able to get past the barrier of the difficulty of using third party libraries.
You'll only want to link to one of the libraries per instance and it will be one of them with the '.lib' suffix, since by convention those designate libraries compiled for MSVS where as a '.a' suffix is used for mingw. Usually there is one library for debugging and another for production, it's not immediately clear which one is which here. If I had to guess I would say the larger one is for debugging.
so it seems like the problem is probably with the last step from shadowCODE's instructions. its very confusing because first he tells me to add the directory of the dll's in my configuration properties and then to link the directory of the dll's in my configuration properties. Then he tell me to move them. Why would i add the directory and then link to the directory only to move the files 1 step later?

also where he says
Link the lib's *.lib files ... e.g.: library.lib
that is a bit confusing as well because my configuration properties only allows me to link to select the folder with the libs in it and not any lib specifically.

i could just move the dll's to the file where visual studio is building the executable but then the glfw header would be referencing the wrong directory wouldnt it? i mean surely the glfw header or its counterpart .cpp must be referencing the dll at some point, seems like i would surely break something if i just went and moved the dll.
Last edited on
Topic archived. No new replies allowed.