0
点赞
收藏
分享

微信扫一扫

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

Microsoft Visual Studio 是微软推出的一款功能强大的开发工具包,为各种平台和语言的软件开发提供了基本完整的工具集。本篇中我们将以VS2017 Release/x64 平台为例,向大家简要概述如何在 DolphinDB 搭建 C++ API 开发环境,并编译相应动态库;详细教程发布于 ​​DolphinDB github​​,可点击超链接获取。

编译环境:Visual Studio 2017

编译模式:Release x64

样本数据和文件下载地址:点击​​ DolphinDB github​​ 获取

案例的程序实现思路是利用开源软件 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 所在目录。

当 VS2017 遇到 DolphinDB:如何编译 C++ API 动态库_时序数据库当 VS2017 遇到 DolphinDB:如何编译 C++ API 动态库_时序数据库_02


项目配置

接下来进行一系列属性配置。有两种方法调出“属性页”对话框,我们可以选中解决方案资源管理器中的项目cppApiDemo,然后再选择主菜单中的 项目->属性;或者右键单击解决方案资源管理器中的项目cppApiDemo,然后选择 属性。这里我们以 Release x64 为例进行演示。

(1)头文件和库目录:在 VC++ 目录 - 包含目录 中添加 OpenSSL 和 API 的头文件目录;在 库目录 中添加 OpenSSL 和 API 的库目录。

当 VS2017 遇到 DolphinDB:如何编译 C++ API 动态库_时序数据库_03当 VS2017 遇到 DolphinDB:如何编译 C++ API 动态库_Visual Studio_04

 (2)配置预处理宏定义:在 C/C++ 预处理器 中添加以下选项:

  • WIN32_LEAN_AND_MEAN;
  • NOMINMAX;
  • WINDOWS; 
  • _CRT_SECURE_NO_WARNINGS; 
  • _WINSOCK_DEPRECATED_NO_WARNINGS;

(3)设置依赖项:在 C/C++ - 链接器 - 输入 附加依赖项 中添加以下依赖项:

  • libDolphinDBAPI.lib;
  • libeay32MD.lib。
  • ssleay32MD.lib;

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


动态库编译

完成上述一系列工作后,我们便可以在 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:0,`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),我们将为大家提供充分、及时的技术支持。

举报

相关推荐

0 条评论