当 VS2017 遇到 DolphinDB:如何编译 C++ API 动态库

2022-05-19 00:00:00 编译 目录 项目 配置 添加
案例的程序实现思路是利用开源软件 rapidCsv 读入 csv 文件,然后调用 DolphinDB C++ API中的 BatchTableWriter 对象写入分布式表。编译过程主要分环境准备添加源码项目配置编译运行四个阶段。

环境准备

首先,我们进行开发环境准备,包括 Visual Studio 2017Git 的安装和 C++ API 代码的下载。需要注意的是,我们所下载的 API 分支应与 DolphinDB Server 的版本相匹配,若为1.30版本,API 须切换到 release130 分支进行下载,2.00等其他版本也依此类推。

添加源码

做好准备工作后,我们就可以开始新建 C++ 的动态链接库(DLL)项目,并将下载好的 API 源码添加至项目的源文件目录下。在这个案例中,下载 cppApiDemo.cpp 并替换项目同名文件,下载 rapidcsv.h 并拷贝到 cppApiDemo.cpp 所在目录。

项目配置

接下来进行一系列属性配置。有两种方法调出“属性页”对话框,我们可以选中解决方案资源管理器中的项目cppApiDemo,然后再选择主菜单中的 项目->属性;或者右键单击解决方案资源管理器中的项目cppApiDemo,然后选择 属性。这里我们以 Release x64 为例进行演示。
(1)头文件和库目录:在 VC++ 目录 - 包含目录 中添加 OpenSSL 和 API 的头文件目录;在 库目录 中添加 OpenSSL 和 API 的库目录。
(2)配置预处理宏定义:在 C/C++ 预处理器 中添加以下选项:
      • WIN32_LEAN_AND_MEAN;
      • _WINSOCK_DEPRECATED_NO_WARNINGS;
      • _CRT_SECURE_NO_WARNINGS; 
      • WINDOWS; 
      • NOMINMAX;
(3)设置依赖项:在 C/C++ - 链接器 - 输入 - 附加依赖项 中添加以下依赖项:
      • libDolphinDBAPI.lib;
      • ssleay32MD.lib;
      • libeay32MD.lib。

动态库编译

完成上述一系列工作后,我们便可以在 VS 中进行动态库的编译了,选择主菜单 生成 - 生成解决方案 即可生成位于相应目录的 lib 文件。运行前需要在本地部署一个 DolphinDB server,并用如下建库建表脚本先创建 dfs://iot/readings。
经过测试,我们在普通的台式机上部署 DolphinDB 单节点模式,并采用社区版默认配置导入一个大小超过 4G 的数据集(>1000万条记录),只需耗时约2分钟。
    login(`admin, `123456)
    if (exists('dfs://iot') ) dropDatabase('dfs://iot')
    db1 = database('',VALUE,2016.11.15..2016.11.18)
    db2 = database('',HASH,[SYMBOL,10])
    db = database('dfs://iot',COMPO,[db1,db2])

    schema=table(1:,`time`device_id`battery_level`battery_status`battery_temperature`bssid`cpu_avg_1min`cpu_avg_5min`cpu_avg_15min`mem_free`mem_used`rssi`ssid,
    [DATETIME,SYMBOL,INT,SYMBOL,DOUBLE,SYMBOL,DOUBLE,DOUBLE,DOUBLE,LONG,LONG,SHORT,SYMBOL])
    db.createPartitionedTable(schema,`readings,`time`device_id)

    本篇以 VS2017 Release/x64平台为例,概述了如何搭建 DolphinDB C++ API 的 Visual Studio 开发环境,并用源码编译 API 动态库。欢迎大家下载体验 DolphinDB,并参照以上案例进行编译试用。如果在编译过程中遇到任何问题,欢迎添加小助手微信( dolphindb1),我们将为大家提供充分、及时的技术支持。
    来源 https://www.modb.pro/db/400481

    相关文章