iotdb-client/client-cpp/examples/README.md
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).