From 1acdc2da1cd0b2d08a562398eb872cd3ec35f09a Mon Sep 17 00:00:00 2001 From: win-claude Date: Fri, 12 Jun 2026 09:06:34 -0400 Subject: [PATCH] webrtc-sys: forward-declare PeerContext as struct (fixes 4x LNK2019 on windows-msvc) include/livekit/jsep.h forward-declares `class PeerContext;`, but PeerContext is a cxx shared type defined Rust-side as `pub struct PeerContext` (src/peer_connection.rs), so cxx emits `struct PeerContext` everywhere it generates C++. Under the MSVC ABI (clang-cl/cl) the class-vs-struct tag is part of the mangled name, so rust::Box (jsep.cpp) and rust::Box (cxx-generated peer_connection.cc) mangle to different symbols -> 4 unresolved externals at link on x86_64-pc-windows-msvc. No-op on Linux/macOS (Itanium ABI). Co-Authored-By: Claude Opus 4.8 --- webrtc-sys/include/livekit/jsep.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webrtc-sys/include/livekit/jsep.h b/webrtc-sys/include/livekit/jsep.h index 536c2e6c5..154aed0ad 100644 --- a/webrtc-sys/include/livekit/jsep.h +++ b/webrtc-sys/include/livekit/jsep.h @@ -35,7 +35,7 @@ class SessionDescription; namespace livekit_ffi { -class PeerContext; +struct PeerContext; class IceCandidate { public: