So I was switching over one of the libraries i use from a prebuilt dynamic DLL to a static library (that I was pulling and building/linking against directly). Everything compiled and linked successfully, but whenever I ran it I would get crashes deep inside standard runtime libraries! I was building and rebuilding and changing settings and trying to figure it out for a couple days, frustratingly to no avail. Finally (I should have done this sooner), I started following the include links in the IDE and noticed that it was still including the old precompiled headers. The functions all existed so I didn't get any errors during build, but a lot of the signatures and parameters had changed so it wasn't calling things correctly!
Grr, note to self, when changing library versions, just rename the old directory (or delete it entirely) to make sure it's not getting included by accident. XD