1.背景介绍

vcpkg工具是微软的开源软件C++编译发布平台

InfluxDB-CXX是利用curl和boost实现的Influxdb的C++客户端,同类产品还有InfluxDB-cpp库等,这些库都不是官方的C++实现。

编译Influxdb-cxx库主要问题包括:

  1. windows下的编译问题

  2. c++17标准带来的问题

2.存在的主要问题

2.1 vcpkg安装Boost的问题

利用vcpkg安装库,需要从github或其他路径下载源代码包,在内网条件下需要将源代码包下载到[vcpkg_root]\downloads路径下。

但是github可能会访问不了,以下的脚本将辅助下载需要的库

 #在vcpkg目录下执行如下命令,获取需要下载的包#记得断网条件下执行#以boost为例.\vcpkg.exe install boost --only-downloads >1.txt#帅选需要下载的行find "-- Downloading " 1.txt > 2.txtfind " -> " 2.txt > 3.txt#然后利用3.txt中的下载行从镜像站点下载​

用于从镜像站点下载的Python脚本如下:

 import requestsimport argparseimport os,timefrom multiprocessing import Pool​def download(tUrl, tFile):"""Function 下载URL到文件@param tUrl DESCRIPTION@type TYPE@param tFile DESCRIPTION@type TYPE"""#tUrl = 'https://gh.api.99988866.xyz/github.com/boostorg/logic/archive/boost-1.75.0.tar.gz'res = requests.get(tUrl)#tFile = 'boostorg-logic-boost-1.75.0.tar.gz'​with open(tFile, 'wb') as f:f.write(res.content)print("finish!%s -> %s"%(tUrl, tFile))def download2(item):"""Function @param item DESCRIPTION@type TYPE"""tUrl, tFile = itemtFile = os.path.join(r"D:\迅雷下载\dw", tFile)download(tUrl, tFile)def loadFile(tFile):"""Function @param tFile DESCRIPTION@type TYPE"""tRes =[]tStart ="-- Downloading https://"tURLBase = "https://gh.api.99988866.xyz/"with open(tFile, 'r') as f:tLines = f.readlines()#分析所有行for iL in tLines:if iL.startswith(tStart):iL = iL.replace("-- Downloading https://", '')iL = iL.replace("...", '')its = iL.split("->")tUrl = tURLBase + its[0].strip()tFname = its[-1].strip()tRes.append([tUrl, tFname])return tRes​def main(args):"""Function @param args DESCRIPTION@type TYPE"""tRes = loadFile(args.df)print(tRes)   for iR in tRes:download2(iR)#多进程下载#    with Pool(1) as p:#        ret = p.map(download,tRes) # func(next(range(10)))#    print(ret)    ​​​if __name__=="__main__":"""寻求下载python [thisscript].py  3.txt"""parser = argparse.ArgumentParser(description='Process some integers.')parser.add_argument('df',  type=str, help='an integer for the accumulator')parser.add_argument('--tgt',  type=str, help='目标目录', default="")args = parser.parse_args()​main(args)   ​​​

下载完成后,将所有包复制到对应的downloads中。

2.2 vcpkg安装Influxdb-cxx问题

Influxdb-cxx的vcpkg的ports有0.6.6和0.6.7两个版本,均存在问题

 src\UriParser.h(30): error C2461: 'http::url': constructor syntax missing formal parameters [src\InfluxDB-BoostSupport.vcxproj]src\UriParser.h(98): error C2440: 'return': cannot convert from 'initializer list' to 'http::url' [src\InfluxDB-BoostSupport.vcxproj]

这是某种不知名的语法错误导致的,纠正方法

 // patch the file src\UriParser.h// on line 29​namespace http {struct url {std::string protocol, user, password, host, path, search, url1;int port;url(const std::string& protocol, const std::string& user, const std::string& password = "", const std::string& host = "", const std::string& path = "", const std::string& search="", const std::string& url1="",int port=8086): protocol(protocol), user(user), password(password), host(host), path(path), search(search), url1(url1) , port(port) {}};​​​
 // 修正错误  src\Point.cxx// line 61convert << name.data() << "=";​// 修正错误 src\InfluxDBFactory.cxx// line 43 auto transport = std::make_unique<transports::HTTP>(uri.url1);

修改这三处之后,重新编译。需要使用--editable

 .\vcpkg install influxdb-cxx[boost] --editable

vcpkg使用的代码仓库是https://github.com/offa/influxdb-cxx

3. Influxdb-cxx的例子

网上很多,这里就不说了。

利用vcpkg编译InfluxDB-cxx库相关推荐

  1. 将java编译成so库_利用android studio 生成 JNI需要的动态库so文件

    JNI:  Java Native Interface,  提供了java语言和其他语言(例如c和c++)进行相互调用的方式. 本文是用java调用c生成的so模式.其中,编译so文件过程如下: 1) ...

  2. OpenCV配置(利用Source编译,并配置扩展库opencv_contrib)

    OpenCV配置(利用Source编译,并配置扩展库opencv_contrib) 1. 配置所需(以个人版本为准) 1.1 CMake下载 1.2 OpenCV Source下载 1.3 OpenC ...

  3. linux编译poco静态库,iOS——为Xcode编译POCO C++静态库

    一.POCO C++ library简介 POCO C++ library是一个C++编写的跨平台库,主要实现网络连接.数据库管理以及服务器,适用于跨平台.嵌入式. 二.为Xcode编译POCO C+ ...

  4. OpenMVS+Win10+VS2019+vcpkg编译及问题

    Win10 + VS2019 + OpenMVS1.1.1 + Vcpkg 1 VS2019安装 2 git安装 3 vcpkg安装 3.1下载vcpkg 3.2安装vcpkg 3.3 配置环境变量 ...

  5. 编译-C语言库FFTW支持iOS平台的静态库

    // 查看xcode 的版本 $:xcodebuild -version Xcode 10.2.1 Build version 10E1001 FFTW:傅立叶变换常用库–fftw FFTW官网:ht ...

  6. 从源码编译InfluxDB

    操作系统 : CentOS7.3.1611_x64 go语言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 go语言安装参考: http://www.cnblogs.com ...

  7. mysql netcdf_Linux下用Intel编译器编译安装NetCDF-Fortan库(4.2以后版本)

    本来这个问题真的没必要写的,可是真的困扰我太久%>_ 首先,最权威清晰的安装文档还是官方的: 那这个文档最开始就告诉我们,自NetCDF库4.2版本以后,Fortran的库和C的库就要分开bui ...

  8. FFmpeg编译出来的库太大?试试这几招

    目录 前言 一.编译出来的库为什么大? 二.去掉多余的格式 三.--enable-small 前言 之前合成Mp4的项目功能已经完成了,在实际测试的时候发现一个问题,就是编译出来的几个库文件加起来太大 ...

  9. 利用CMake编译OpenCV-4.1.2源码,使其可以在VS2012下进行图像处理开发的记录(因缺少OpenBLAS未成功)

    目前,OpenCV已经发展到OpenCV4.X了. OpenCV是以CMake 作为项目架构系统的开源项目. 在OpenCV4中,只为我们CMake编译好了64位的适用于vc14(Visual Stu ...

最新文章

  1. 智能猫窝是如何诞生的?详解百度大脑的开放生态
  2. 【转】如何在github上fork一个项目来贡献代码以及同步原作者的修改 -- 不错
  3. 数据库学习(MySQL):JDBC的简单增删改查实现
  4. JS里面的懒加载(lazyload)
  5. imageloader图片基本加载
  6. 计算机应用基础课程是过程化考试吗,基于能力的计算机应用基础课程过程化考核标准构建与实施.doc...
  7. 【转】 Oracle中分区表的使用
  8. Python+OpenCV:理解k近邻(kNN)算法(k-Nearest Neighbour (kNN) algorithm)
  9. 使用Secure Boot后,导致VMware无法启动虚拟机
  10. 详解如何正确使用Tuxera NTFS For Mac软件
  11. 基于公司云平台的素材归档系统(一)
  12. java spring 连接池配置_Spring中常用的连接池配置
  13. 大数据采集入门——网络爬虫技术——Selenium
  14. mac安装绿联USB转以太网驱动
  15. linux下动态库的符号冲突、隐藏和强制优先使用库内符号
  16. CCTM_FormElement 类
  17. Vue安装element ui踩坑
  18. Dream_Chaser队训练赛第一场 I题
  19. 转载:深入学习java源码之Callable.call()与Future.get()
  20. 鱼眼镜头/全景相机原理/全景相机标定

热门文章

  1. firefoxos中打开app
  2. 鸿蒙 电视盒子,目前最强的电视盒子:性价比最高的5款电视盒子
  3. 硬盘柱面损坏怎么办_硬盘扇区损坏怎么办
  4. 本世纪,佛祖派机器人来弘扬佛法
  5. 融会贯通,从oracle...,融会贯通Oracle数据库的25条基本知识:
  6. JAVA生成纯色背景图-自定义大小-自定义颜色
  7. VSCode中出现未定义标识符,可以找到引用但是依旧标红
  8. 软件架构模式 mark Richards - 读后总结 5 - 基于空间的架构
  9. Pytho解析器的安装及配置
  10. 软件测试这篇就够啦~