Sample programs that link against the pre-built IoTDB C++ Session SDK (iotdb_session). Thrift and Boost are not required at application compile time; they are embedded inside the SDK shared library.
All examples connect to a running IoTDB instance (default 127.0.0.1:6667, user root / root).
| Example | Description |
|---|---|
SessionExample | Tree model: DDL, insert, query, delete |
AlignedTimeseriesSessionExample | Aligned time series and templates |
TableModelSessionExample | Table (relational) model |
MultiSvrNodeClient | Multi-node insert/query loop |
tree_example | C Session API (tree model) |
table_example | C Session API (table model) |
Release CI (client-cpp-package.yml) publishes one zip per platform/toolchain: iotdb-session-cpp-<version>-<classifier>.zip (package root contains include/ and lib/).
| Deployment target | Classifier suffix |
|---|---|
| Linux x86_64, glibc >= 2.28 | linux-x86_64-glibc2.28 |
| Linux aarch64, glibc >= 2.28 | linux-aarch64-glibc2.28 |
| macOS x86_64 | macos-x86_64 |
| macOS arm64 | macos-aarch64 |
| Windows (match your Visual Studio version) | windows-x86_64-msvc14.1 ... msvc14.4 |
The current build compiles Thrift 0.21 from source at CMake configure time. Legacy -Diotdb-tools-thrift.version=... flags applied to the old pre-built Thrift workflow only. Linux release packages are built in the manylinux_2_28 container and require glibc 2.28 or newer. See client-cpp README.
The SDK zip produced by client-cpp contains public headers only and one shared library:
client/
├── include/
│ ├── Session.h
│ ├── Export.h
│ └── ...
└── lib/
├── iotdb_session.dll + iotdb_session.lib (Windows)
├── libiotdb_session.so (Linux)
└── libiotdb_session.dylib (macOS)
From the repository root:
mvn clean verify -P with-cpp -pl iotdb-client/client-cpp -am
Maven builds the C++ client, starts a local IoTDB server for the verify phase, and runs the C++ tests plus runnable examples through CTest. Example binaries are under iotdb-client/client-cpp/target/build/examples/ (or target/build/examples/Release/ with Visual Studio).
client/include and client/lib exist (see layout above).examples/ directory as the source tree and place client/ beside it, or pass -DIOTDB_SDK_ROOT=/path/to/iotdb-session-cpp-....cmake -S iotdb-client/client-cpp/examples -B build \ -DCMAKE_BUILD_TYPE=Release \ -DIOTDB_SDK_ROOT=/path/to/iotdb-session-cpp-... cmake --build build
Windows (Visual Studio generator):
cmake -S . -B build -A x64 cmake --build build --config Release
Each executable is built with the IoTDB runtime library copied next to the .exe / binary (POST_BUILD step). Linux/macOS binaries use $ORIGIN rpath so they resolve the .so / .dylib in the same directory.
Optional staging folder for deployment:
cmake --build build --target example-dist # -> build/dist/ contains all example binaries + libiotdb_session.{so,dll,dylib}
You only need:
Copy either from build/.../Release/ (Windows) / build/ (Ninja/Make) or from build/dist/ after example-dist.
Files to copy
SessionExample.exe iotdb_session.dll
(Repeat for the other example names if needed.)
Prerequisites on the target PC
/MD; the redistributable supplies vcruntime140.dll, msvcp140.dll, etc. Installing this package is enough—you do not need Visual Studio or the IoTDB SDK on the target machine.Run
.\SessionExample.exe
If you see “The code execution cannot proceed because VCRUNRuntime140.dll was missing”, install the VC++ redistributable above.
You do not need a separate Thrift or Boost runtime; they are inside iotdb_session.dll.
Files to copy
SessionExample libiotdb_session.so chmod +x SessionExample
Prerequisites on the target machine
Check build machine (record in release notes):
ldd --version | head -1 # e.g. ldd (Ubuntu GLIBC 2.35-0ubuntu3) 2.35
Check target machine:
ldd --version | head -1 # must be >= build glibc (same major.minor or newer)
See which GLIBC_ symbols the binary needs:
objdump -T SessionExample | grep GLIBC_ | sed 's/.*GLIBC_/GLIBC_/' | sort -Vu | tail -5 objdump -T libiotdb_session.so | grep GLIBC_ | sed 's/.*GLIBC_/GLIBC_/' | sort -Vu | tail -5
If the target glibc is too old, you'll get errors like version 'GLIBC_2.34' not found at runtime. Rebuild the SDK on an older distro (or in an older container) to widen compatibility.
Run (with .so beside the binary):
./SessionExample
If the shared library is not found:
export LD_LIBRARY_PATH=. ./SessionExample
No separate Thrift install is required.
Copy the example binary and libiotdb_session.dylib together. The target macOS version should be ≥ the deployment target used to build the SDK. Check with:
otool -L SessionExample
/MD (dynamic CRT). This matches a default Visual Studio project; link iotdb_session.lib, ship iotdb_session.dll.libiotdb_session.so; link it directly. Prefer shipping the .so next to your binary or setting RPATH to $ORIGIN.127.0.0.1:6667; change host/port in the source if needed.client-cpp/examples/ ├── README.md ├── README_zh.md ├── CMakeLists.txt ├── SessionExample.cpp ├── AlignedTimeseriesSessionExample.cpp ├── TableModelSessionExample.cpp ├── MultiSvrNodeClient.cpp ├── tree_example.c └── table_example.c
After mvn package, the runnable tree is under target/ (sources, client/, and CMake build output).