popov.link/_posts/2023-05-04-create-lib-file-from-dll.md
2024-02-14 03:53:22 +04:00

2.3 KiB

description title layout
Learn how to generate a *.lib file from a *.dll with this comprehensive guide. Using the Visual Studio Command Prompt and Microsoft's recommended tools, this article walks you through the steps for a seamless process. Perfect for developers working with 3rd party win dll's. Create ".lib" file from ".dll" (archive) post

This's a copy of a non-my post. The original article is here (archive).

When working with 3rd party win dll's you sometimes miss the according to the *.lib file required to compile against it. There is an Microsoft KB-Q131313 (archive) article showing how to generate a *.lib file from a *.dll however the required steps are not described detailed enough I think. So here is my quick guide.

Open the "Visual Studio Command Prompt", you find its shortcut in "Start" -> "Programs" -> "Microsoft Visual Studio Tools". Now run the dumpbin command to get a list of all exported functions of your dll:

dumpbin /exports C:\\yourpath\\yourlib.dll

This will print quite a bit of text to the console. However, we are only interested in the functions:

ordinal hint RVA      name

1    0 00017770 jcopy_block_row
2    1 00017710 jcopy_sample_rows
3    2 000176C0 jdiv_round_up
4    3 000156D0 jinit_1pass_quantizer
5    4 00016D90 jinit_2pass_quantizer
6    5 00005750 jinit_c_coef_controller
...etc

Now copy all those function names (only the names!) and paste them into a new text file. Name the next file yourlib.def and put the line "EXPORTS" at its top. My yourlib.def file looks like this:

EXPORTS
jcopy_block_row
jcopy_sample_rows
jdiv_round_up
jinit_1pass_quantizer
jinit_2pass_quantizer
jinit_c_coef_controller
...

Now from that definition file, we can finally create the *.lib file. We use the lib tool for this, so run this command in your "Visual Studio Command Prompt":

lib /def:C:\\mypath\\mylib.def /OUT:C:\\mypath\\mylib.lib

That's it, happy coding 🙂