Question: I write a program helloworld.exe; it depends on a.dll. I don't have the source code of the a.dll, which is a dynamic dll. How can i change it to static library, so I can link it into helloworld.exe?

Answer: 
False, it is possible to do this. For example there is a tool called [dlltolib](http://www.binary-soft.com/dll2lib/dll2lib.htm) which can do it.
On windows, you can get the lib file to run your program if you have the corresponding def file. You can use the command prompt window of visual studio to get the lib file. The command line is as follows: lib /def:XXX.def /machine:x64 (or x86 to get 32bit lib)/out:XXX.lib. You need to make sure the def file and dll file are in the same folder and you have changed the directory to the folder.