There are a few DLLs which my Delphi programs interface to, which were developed in other languages. Using LoadLibrary() and GetProcAddress(), your code can avoid crashing by checking for the existance of the DLL. This also allows storing the DLL as a resource, inside the executable, which you can extract to the filesystem and before calling LoadLibrary() and GetProcAddress().
Extracting the DLL to the filesystem works, but there is a better way: BTMemoryModule. BTMemoryModule allows you to extract the DLL to a TMemoryStream, and use it as a DLL, with BTMemoryLoadLibrary and BTMemoryGetProcAddress.
By not extracting the DLL to the filesystem, file access security issues are avoided. This about.com article suggests outputting the DLL in the same directory as the EXE, which is frowned upon in Windows versions after XP. I wasn’t sure if BTMemoryModule would cause problems with Windows Vista UAC, but I haven’t experienced any.
I have a demo project which demonstrates using BTMemoryModule and dGina.dll to disable the windows taskbar at GitHub (If you don’t use Git, or don’t know what it is, you can click the “download” button on the page to download a Zip file). It compiles (at least) with Delphi 2006, Delphi 2007 and Delphi 2009 (I made minor changes to the BTMemoryModule.pas that I downloaded years ago to work with Delphi2009, but I don’t remember exactly what had to be changed. It was minor though).