Late to the party, but I wrote a C++ API for the MaxMind GeoIP db recently. I didn't test it under Windows, I only ran it under Linux, but it definitely isn't Linux-specific.
I called it GeoLite2++. You can find it here: https://www.ccoderun.ca/GeoLite2++/api/
Source tarball and .deb files for Ubuntu are here: https://www.ccoderun.ca/GeoLite2PP/download/?C=M;O=D
Example source code:
#include <GeoLite2PP.hpp>
...
GeoLite2PP::DB db( "/opt/stuff/GeoLite2-City.mmdb" );
std::string json = db.lookup( "216.58.216.163" );
std::cout << json << std::endl;
Example output:
{
"city" :
{
"names" :
{
"de" : "Mountain View",
"en" : "Mountain View",
...
It includes more, such as getting individual fields versus grabbing entire records as JSON strings.
An example showing how to grab a single field:
GeoLite2PP::DB db("GeoLite2-City.mmdb");
std::string city = db.get_field( "65.44.217.6", "en",
GeoLite2PP::VCStr { "city", "names" } );
The central class is described here: https://www.ccoderun.ca/GeoLite2++/api/classGeoLite2PP_1_1DB.html