Ever run into:
Error 3 fatal error C1083: Cannot open include file: 'sddl.h': No such file or directory C:Program FilesMicrosoft Visual Studio 9.0VCceatlmfcincludeatlsecurity.h
And of course you never included atlsecutity.h in your project so who knows which file did…
Add /showincludes to your cl options and all becomes clear. BTW, gcc has an infinitely better system for reporting nested file issues – wonder how long before MS figures it out.
While playing with Boost I recently ran into a bunch of library mismatch errors. Knowing which files do what helps immensely and, while I’m using VS 2008, the best summary I found was from an MSDN article on Microsoft Visual C++ 4.2.
|Library types and related compiler switches
||Basic C runtime library
||Standard C++ Library
||Old iostream library
|Single Threaded (ML)
|Multithreaded DLL version (MD)
||MSVCRT.LIB (import library for MSVCRT.DLL)
||MSVCPRT.LIB* (also uses MSVCRT.DLL)
||MSVCIRT.LIB (import library for MSVCIRT.DLL)
|Debug Single Threaded (MLd)
|Debug Multithreaded (MTd)
|Debug Multithreaded DLL (MDd)
||MSVCRTD.LIB (import library for MSVCRTD.DLL)
||MSVCPRTD.LIB * (also uses MSVCRTD.DLL)
||MSVCIRTD.LIB (import library for MSVCIRTD.DLL)
MSVCPRT.LIB and MSVCPRTD.LIB are static libraries and do not have any DLLs related with them directly. These libraries are also dependent on MSVCRT.DLL and MSVCRTD.DLL, respectively. Any applications that use MSVCPRT.LIB or MSVCPRTD.LIB and use the “Ignore Default Library” (/NOD or NODEFAULTLIB) option, must link MSVCPRT.LIB(or MSVCPRTD.LIB) and MSVCRT.LIB (or MSVCRTD.LIB ), otherwise linker errors (such as LNK2001: unresolved externals in MSVCPRT.LIB or MSVCPRTD.LIB) will be produced.