This function doesn't return a struct, but fills in a struct via
a provided pointer.
The ABI of returning a struct is different between MSVC and mingw.
This allows using the same function from mingw, even though the DLL
has been built with MSVC.
If the codec library is loaded dynamically, it may be necessary that
the loaded library actually matches the version that was used when
it was built, to avoid issues due to ABI differences. Therefore add
a public function to allow getting the version of the currently
loaded library.