Robert J. Hansen rjh at
Thu Dec 1 03:54:06 CET 2016

For long and boring reasons I need to be able to call GPGME from
Microsoft Visual C++.  The MSVC linker requires .lib files, which are
not shipped with GnuPG.  That's okay: the procedure to make them is
pretty straightforward.

For each of libgpgme-11.dll, libgpg-error-0.dll, and libassuan-0.dll, I:

1.  ran dumpbin /exports on it, to recover the function names
2.  put these function names in a text file with "EXPORTS" at the top
3.  ran lib /def:somefile.def /out:somefile.lib to create the .libs

(Insert appropriate filenames for "somefile", of course.)

A really basic test of GPGME passes: I can link against
gpgme_check_version and confirm the correct version of GPGME.  However,
I can't actually *do* anything with it: gpgme_engine_check_version
continually throws an invalid engine error, and gpgme_get_dirinfo keeps
on returning nulls.

So, if I had to wager a guess, GPGME isn't able to find GnuPG.

My sample code runs just fine on OS X and Linux, incidentally, so I
doubt the problem is with it.  (If people want to see it just to make
sure, I'm happy to provide it.)

Anyone have any ideas?

More information about the Gnupg-users mailing list