.LIB (library) are collections of compiled source files (object files) that you can link to your application to provide functionality. Linking makes object files part of your executable. This is usually called static linking , and why you got a compile-time error about missing characters; library files were not available to extract the necessary object code to add to your application.
.DLL (dynamic link library) - these are compiled source files that can be loaded at run time and used certain functions (usually by name); they are not part of your executable, but are loaded at runtime from the DLL itself. (Having no DLLs available, as you have already seen, means that your application does not start.) They are not needed at compile time, but only at runtime.
Some IDEs (for example, Visual Studio C / C ++) create both a static .LIB file and a .DLL version, so you can choose to run-time libraries directly link to your application or provide them to dynamically load at runtime. (The second is useful, for example, if you have several applications that you have developed, you can use the dynamic version of MSVCRTL to drastically reduce the size of your executable files by distributing the RTL separately, and not be bundled in each application.
source share