パーティーに遅れましたが、最近MaxMindGeoIPdb用のC++APIを作成しました。私はそれをWindowsでテストしませんでした、私はそれをLinuxで実行しただけです、しかしそれは間違いなくLinux特有ではありません。
私はそれをGeoLite2++と呼びました。ここで見つけることができます: https ://www.ccoderun.ca/GeoLite2++/api/
Ubuntuのソースtarballファイルと.debファイルは次のとおりです: https ://www.ccoderun.ca/GeoLite2PP/download/?C = M; O = D
ソースコードの例:
#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;
出力例:
{
"city" :
{
"names" :
{
"de" : "Mountain View",
"en" : "Mountain View",
...
個々のフィールドを取得するのではなく、レコード全体をJSON文字列として取得するなど、さらに多くのことが含まれます。
単一のフィールドを取得する方法を示す例:
GeoLite2PP::DB db("GeoLite2-City.mmdb");
std::string city = db.get_field( "65.44.217.6", "en",
GeoLite2PP::VCStr { "city", "names" } );
中央クラスについては、 https ://www.ccoderun.ca/GeoLite2++/api/classGeoLite2PP_1_1DB.htmlで説明されています。