This file lists all system-level dependencies required to link against the LiveKit C++ SDK libraries.
The LiveKit SDK consists of two libraries:
livekit.lib/liblivekit.a- Main SDK static librarylivekit_ffi.dll/liblivekit_ffi.so/liblivekit_ffi.dylib- Rust FFI dynamic library
The SDK uses different distribution strategies per platform:
✅ Ready to use - All dependencies included:
livekit.lib- Main SDK static librarylivekit_ffi.dll+livekit_ffi.dll.lib- Rust FFI dynamic librarylibprotobuf.dll+libprotobuf.lib- Protocol Buffers runtimeabseil_dll.dll+abseil_dll.lib- Abseil C++ library
User action: Copy all DLLs alongside your executable. No additional installation required.
liblivekit.a- Main SDK static library (included)liblivekit_ffi.so- Rust FFI dynamic library (included, must be placed alongside your executable)libprotobuf- Must install viaapt install libprotobuf-devlibssl- Must install viaapt install libssl-devlibabsl- Only if built with Protobuf 6.0+:apt install libabsl-dev
User action: Install required packages and copy liblivekit_ffi.so to your executable directory.
liblivekit.a- Main SDK static library (included)liblivekit_ffi.dylib- Rust FFI dynamic library (included, must be placed alongside your executable)protobuf- Must install viabrew install protobufabseil- Only if built with Protobuf 6.0+:brew install abseil
User action: Install required packages and copy liblivekit_ffi.dylib to your executable directory.
When linking on Windows, you must add these system libraries:
target_link_libraries(your_app PRIVATE
# LiveKit static libraries
livekit
livekit_ffi
# Windows system libraries (REQUIRED)
ntdll # NT kernel interface
userenv # User environment functions
winmm # Windows multimedia
iphlpapi # IP Helper API
msdmo # DirectX Media Objects
dmoguids # DMO GUIDs
wmcodecdspuuid # Windows Media codec DSP UUIDs
ws2_32 # Winsock 2
secur32 # Security Support Provider Interface
bcrypt # Cryptography API
crypt32 # Cryptography API (certificates)
)If using Visual Studio directly, add to Linker → Input → Additional Dependencies:
ntdll.lib;userenv.lib;winmm.lib;iphlpapi.lib;msdmo.lib;dmoguids.lib;wmcodecdspuuid.lib;ws2_32.lib;secur32.lib;bcrypt.lib;crypt32.lib
When linking on macOS, you must add these system frameworks:
find_library(FW_COREAUDIO CoreAudio REQUIRED)
find_library(FW_AUDIOTOOLBOX AudioToolbox REQUIRED)
find_library(FW_COREFOUNDATION CoreFoundation REQUIRED)
find_library(FW_SECURITY Security REQUIRED)
find_library(FW_COREGRAPHICS CoreGraphics REQUIRED)
find_library(FW_COREMEDIA CoreMedia REQUIRED)
find_library(FW_VIDEOTOOLBOX VideoToolbox REQUIRED)
find_library(FW_AVFOUNDATION AVFoundation REQUIRED)
find_library(FW_COREVIDEO CoreVideo REQUIRED)
find_library(FW_FOUNDATION Foundation REQUIRED)
find_library(FW_APPKIT AppKit REQUIRED)
find_library(FW_QUARTZCORE QuartzCore REQUIRED)
find_library(FW_OPENGL OpenGL REQUIRED)
find_library(FW_IOSURFACE IOSurface REQUIRED)
find_library(FW_METAL Metal REQUIRED)
find_library(FW_METALKIT MetalKit REQUIRED)
find_library(FW_SCREENCAPTUREKIT ScreenCaptureKit REQUIRED)
target_link_libraries(your_app PRIVATE
# LiveKit static libraries
livekit
livekit_ffi
# macOS frameworks (REQUIRED)
${FW_COREAUDIO}
${FW_AUDIOTOOLBOX}
${FW_COREFOUNDATION}
${FW_SECURITY}
${FW_COREGRAPHICS}
${FW_COREMEDIA}
${FW_VIDEOTOOLBOX}
${FW_AVFOUNDATION}
${FW_COREVIDEO}
${FW_FOUNDATION}
${FW_APPKIT}
${FW_QUARTZCORE}
${FW_OPENGL}
${FW_IOSURFACE}
${FW_METAL}
${FW_METALKIT}
${FW_SCREENCAPTUREKIT}
)
target_link_options(your_app PRIVATE "LINKER:-ObjC")Add to Build Phases → Link Binary With Libraries:
- CoreAudio.framework
- AudioToolbox.framework
- CoreFoundation.framework
- Security.framework
- CoreGraphics.framework
- CoreMedia.framework
- VideoToolbox.framework
- AVFoundation.framework
- CoreVideo.framework
- Foundation.framework
- AppKit.framework
- QuartzCore.framework
- OpenGL.framework
- IOSurface.framework
- Metal.framework
- MetalKit.framework
- ScreenCaptureKit.framework
Also add -ObjC to Other Linker Flags.
First, install the required development packages:
# Ubuntu/Debian
sudo apt install libprotobuf-dev protobuf-compiler libabsl-dev libssl-dev
# Fedora/RHEL
sudo dnf install protobuf-devel abseil-cpp-devel openssl-develfind_package(Protobuf REQUIRED)
find_package(OpenSSL REQUIRED)
target_link_libraries(your_app PRIVATE
# LiveKit static libraries
livekit
livekit_ffi
# Protobuf (REQUIRED)
protobuf::libprotobuf
# Linux system libraries (REQUIRED)
OpenSSL::SSL
OpenSSL::Crypto
pthread
dl
)
# NOTE: If using Protobuf 6.0+, you also need to link Abseil:
# find_package(absl REQUIRED)
# target_link_libraries(your_app PRIVATE absl::log absl::strings absl::base)g++ your_app.cpp \
-I/path/to/livekit/include \
-L/path/to/livekit/lib \
-llivekit -llivekit_ffi \
-lprotobuf -lssl -lcrypto -lpthread -ldlerror LNK2019: unresolved external symbol __imp_WSAStartup
Solution: Add ws2_32.lib to your linker dependencies.
error LNK2019: unresolved external symbol BCryptGenRandom
Solution: Add bcrypt.lib to your linker dependencies.
Undefined symbols for architecture x86_64:
"_AudioObjectGetPropertyData", referenced from:
Solution: Link against CoreAudio.framework.
undefined reference to `SSL_CTX_new'
Solution: Install OpenSSL development package and link against it:
sudo apt install libssl-dev| Platform | System Libraries Count | Key Dependencies |
|---|---|---|
| Windows | 11 libraries | ws2_32, bcrypt, secur32 |
| macOS | 17 frameworks | CoreAudio, VideoToolbox, ScreenCaptureKit |
| Linux | 2+ libraries | OpenSSL (ssl, crypto) |
To verify you have all dependencies linked correctly:
- Build your application
- Check for linker errors - any
unresolved external symbolorundefined referenceindicates a missing system library - Run the application - if it crashes immediately, you may be missing runtime dependencies
- See
README_BUILD.mdfor complete build instructions - Check
CMakeLists.txtlines 287-381 for the exact CMake configuration - Open an issue at: https://github.com/livekit/client-sdk-cpp/issues