1. It's a executable file
2. When loading an executable, no export is called, but only the module entry point.
3. When a system launches new executable, a new process is created
4. The entry thread is called in context of main thread of that process.
1. It's a Dynamic Link Library
2. There are multiple exported symbols.
3. The system loads a DLL into the context of an existing process.
Ø Well the most obvious difference is that EXE files are used for launching an application (it contains a startup function etc), whereas DLLs are loaded into an application (ie they can't run by themselves).