Your DLL knows about its symbols, but the outer world does not, the lib file has information about the symbols inside the DLL.
You don't actually need the lib, but its much more complected to do with out a lib file.
You can use delayed dll loading and than use GetProcAddress() and manually based on the header create the pointers to the function in the DLL.
You might need that if you don't have a lib file to an external DLL - but you do have the header (you need to know the constructs of the functions - an export file can also be used). or if you wish not to distribute your lib file for what ever reason.
Based on your questions, you should probably first practice in building and using DLLs the "normal" way - and read about what linking is and how it works.
Some useful links:
http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/151kt790.aspx