aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2023-05-04 23:22:27 +0300
committerValentin Popov <valentin@popov.link>2023-05-04 23:22:27 +0300
commit08cff8163cd9c1cf23d27cb0a541a6e733733b65 (patch)
tree6e7fc0981f84df0458675dfed77b86f50d22ec25
parent16514035aea1f814d95b3fbcac1987c3f96780a9 (diff)
downloadpopov.link-08cff8163cd9c1cf23d27cb0a541a6e733733b65.tar.xz
popov.link-08cff8163cd9c1cf23d27cb0a541a6e733733b65.zip
Added archives post
-rw-r--r--content/blog/create-lib-file-from-dll.md57
1 files changed, 57 insertions, 0 deletions
diff --git a/content/blog/create-lib-file-from-dll.md b/content/blog/create-lib-file-from-dll.md
new file mode 100644
index 0000000..791d9bd
--- /dev/null
+++ b/content/blog/create-lib-file-from-dll.md
@@ -0,0 +1,57 @@
++++
+title = "Create \".lib\" file from \".dll\""
+date = 2023-05-04
++++
+
+> This's a copy of an existing post.
+> The original article [is here](https://web.archive.org/web/20160228170508/https://adrianhenke.wordpress.com/2008/12/05/create-lib-file-from-dll/).
+
+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 [MS KB](https://jeffpar.github.io/kbarchive/kb/131/Q131313/) 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:
+
+```shell
+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:
+
+```shell
+lib /def:C:\\mypath\\mylib.def /OUT:C:\\mypath\\mylib.lib
+```
+
+That's it, happy coding 🙂 \ No newline at end of file