Windows DLL for serial communication. It implements the
cpp-core interface and provides functions for discovering, monitoring,
opening, configuring, reading from, and writing to serial ports.
- CMake 3.30 or newer (4.3 or newer when building with clang-cl)
- Git
- A compiler with sufficient C++26 support
- One of:
- Windows with Visual Studio 2022 and the C++ workload
- Linux with an x86-64 MinGW-w64 toolchain for cross-compilation
CMake downloads cpp-core and GoogleTest automatically during configuration.
git clone https://github.com/Serial-IO/cpp-bindings-windows.git
cd cpp-bindings-windows
cmake --preset windows-vs-release
cmake --build --preset windows-vs-release --config Release --target cpp_bindings_windowsThe DLL is written below build/Release/.
Official release and JSR artifacts currently target x86_64-windows-msvc.
Release DLLs statically include the MSVC runtime and expose the complete C API
described by cpp-core 2.0.1.
The MinGW preset provides a local compile and link check from Linux:
cmake --preset windows-mingw-release
cmake --build --preset windows-mingw-release \
--target cpp_bindings_windows cpp_bindings_windows_testsThe DLL and test executable are written to build/mingw/. The tests must be
run on Windows (or in a compatible Windows runtime); cross-compilation alone
does not execute them.
Build and run the C++ suite on Windows:
cmake --build --preset windows-vs-release --config Release --target cpp_bindings_windows_tests
ctest --test-dir build -C Release --output-on-failureTests that require a serial device use SERIAL_TEST_PORT and are skipped when
no suitable device is available.
The optional Deno FFI smoke tests require Deno 2 and a built DLL:
cd integration_tests
deno task testRelease and JSR packages include x86_64-windows-msvc API metadata generated
from the public cpp-core headers with
ASTrein. It describes exported symbols,
types, callbacks, default values, and API documentation for downstream FFI
adapter generators.
This project is licensed under the GNU Lesser General Public License v3.0.