Given the list of problems you're having compiling Casey's code, I suspect you are not using a single translation unit build. The code for Day 17 should compile with few, if any, errors on VS 2015. Are you compiling each of the .cpp files separately and linking thereafter? Remember, all of Casey's "internal" (i.e., static) functions have, fittingly, internal linkage; so other translation units won't be able to see their definitions.