There's no problem calling C code from C++ as long as the declarations are properly wrapped in extern "C" blocks.
We don't have a get_pid, but we do have getpid which libc defines in sys\process.h and it is properly wrapped.
OK, that explains things.
I actually managed to build a statically linked botan.exe and botan-test.exe, the library is over 14 MB's.
Running botan-test.exe gets quite a ways before crashing at,
...
argon2:
terminate called recursively
terminate called recursively
terminate called after throwing an instance of 'Killed by SIGABRT
pid=0xstd::system_error2f0e ppid=0x0076 tid=0x0009 slot=0x00df pri=0x0200 mc=0x0
001 ps=0x0010
'
H:\TMP\BOTAN\BOTAN-TEST.EXE what(): Operation not permitted
terminate called recursively
Creating 2F0E_09.TRP
Moved 2f0e_09.TRP to W:\var\log\app\682fa811-2f0e_09-BOTAN-TEST-exceptq.txt
Need to add a -g somewhere. trp attached
Probably going to have to ask upstream for advice in building a working DLL. Source will need some patching to support sockets, with luck only an include but probably avoid IPv6 stuff.