编译 API 动态库

本小节讲解如何在 Windows 环境下使用 Visual Studio 2022、在 Linux 环境(以 RedHat 为例),以及在 Windows 环境下使用 MinGW 编译出 API 动态库。

Windows 环境下使用 Visual Studio 2022编译

环境准备

  1. 安装软件 Visual Studio 2022GitCMake
  2. 下载 OpenSSL 库。本文中的下载目录是 D:/temp/openssl-1.0.2l-vs2017。

代码准备

在 Gitee 的 api-cplusplus项目中下载代码,并切换至预期分支。以main分支为例,在 Git Bash 中执行如下命令:

git clone git@gitee.com:dolphindb/api-cplusplus.git
git checkout -b main origin/main

编译方法

在 PowerShell 中执行如下命令,即可成功编译出 DolphinDBAPI.dll 和 DolphinDBAPI.lib:

cd path/to/api-cplusplus
mkdir build && cd build
cmake .. -G "Visual Studio 17 2022" -A x64 -DUSE_OPENSSL=1 -DOPENSSL_PATH=D:/temp/openssl-1.0.2l-vs2017 -DCMAKE_CONFIGURATION_TYPES="Release;Debug"
cmake --build . --config Release

cmake 参数说明:

  • -G:用来指定编译器。如果安装为其它版本的 Visual Studio,则此处须对应修改。
  • -A:x64 指定生成64位的动态库,Win32 指定生成32位的动态库。
  • -DUSE_OPENSSL=1:如果想使用 openssl 来加密 API 和 DolphinDB 之间的通信,则必须指定该参数。指定后编译 API 动态库时会去链接 SSL 以及 crypto 动态库。
  • -DOPENSSL_PATH=/path/to/openssl:如果系统中没有安装 openssl,则可以通过该参数来指定 OPENSSL 路径。
  • -DCMAKE_CONFIGURATION_TYPES="Release;Debug":生成的 Visual Studio 项目文件支持编译 Release 或 Debug 类型的动态库。
  • --config Release:生成 Release 类型的目标文件,也可以改为 Debug。
Note: 如果使用的是从上述网址下载的 openssl 库,并且希望编译64位的动态库,那么需要在执行 cmake 命令之前,删除该下载的 openssl 库目录中的 bin,include,以及 lib 文件夹,并将 bin64,include64以及 lib64文件夹重命名为 bin,include 以及 lib,因为 CMake 会在这些目录中寻找头文件以及库。

Windows 环境下使用 MinGW 编译

环境准备

  1. 安装软件 MinGW,Git,CMake。
  2. OpenSSL 库使用的是 API 源码中 lib 目录下的 openssl-1.0.2u。

代码准备

在 Gitee 的 api-cplusplus项目中下载代码,并切换至预期分支。以 main 分支为例,在 Git Bash 中执行如下命令:

git clone git@gitee.com:dolphindb/api-cplusplus.git
git checkout -b main origin/main

编译方法

在 Power Shell 中执行如下命令,即可成功编译出 libDolphinDBAPI.dll:

cd path/to/api-cplusplus
mkdir build && cd build
cmake .. -G "MinGW Makefiles" -DUSE_OPENSSL=1 -DOPENSSL_PATH=D:/workspace/testCode/api-cplusplus/lib/openssl-1.0.2u/openssl-1.0.2u/static
cmake --build .

cmake 参数说明:

  • -G:用来指定编译器。
  • -DUSE_OPENSSL=1: 如果想使用 openssl 来加密 API 和 DolphinDB 之间的通信,则必须指定该参数。指定后编译API动态库时会去链接 ssl 以及 crypto 动态库。
  • -DOPENSSL_PATH=/path/to/openssl:如果系统中没有安装 openssl,则可以通过该参数来指定 OPENSSL 路径。

Linux 环境下编译(以 RedHat 为例)

环境准备

  1. 安装 gcc/g++(version >= 4.8.5),Git,CMake。
  2. 安装Openssl-devel 以及 Uuid-devel
    yum install openssl-devel
    yum install libuuid-devel 

代码准备

在 Gitee 的 api-cplusplus项目中下载代码,并切换至预期分支。以 main 分支为例,在终端中执行如下命令:

git clone git@gitee.com:dolphindb/api-cplusplus.git
git checkout -b main origin/main

编译方法

在终端中执行如下命令,即可成功编译出 libDolphinDBAPI.so:

cd path/to/api-cplusplus
mkdir build && cd build
cmake .. -DABI=0 -DUUID_PATH=/home/uuid/ -DUSE_OPENSSL=1 -DOPENSSL_PATH=/home/openssl/
make -j4

cmake 参数说明:

  • -DABI=0:用来指定编译时 _GLIBCXX_USE_CXX11_ABI 的值,可以设置为1或者0。
  • -DUUID_PATH=/path/to/uuid:如果系统中没有安装 uuid,则可以通过该参数来指定UUID路径,编译时会在。${UUID_PATH}/include 目录下寻找头文件,在${UUID_PATH}/lib 目录下寻找 uuid 库。
  • -DUSE_OPENSSL=1:如果想使用 openssl 来加密 API 和 DolphinDB 之间的通信,则必须指定该参数。指定后编译API动态库时会去链接 ssl 以及 crypto 动态库。
  • -DOPENSSL_PATH=/path/to/openssl:如果系统中没有安装 openssl,则可以通过该参数来指定 OPENSSL 路径。