I have a SwiftPM package which builds a little bit of C code to a dynamic library. It builds fine on Mac/Linux. On Windows (with Swift 5.5.1), I get:
C:\Users\eric\dev\sourcegear-bridge-lib-hook>swift build [1/2] Compiling sg_resolve_jumptable sg_resolve_jumptable.c lld-link: error: undefined symbol: __declspec(dllimport) swift_addNewDSOImage >>> referenced by C:\Library\Developer\Platforms\Windows.platform\Developer\SDKs\Windows.sdk\usr\lib\swift\windows\x86_64\swiftrt.obj:(void __cdecl swift_image_constructor(void)) clang: error: linker command failed with exit code 1 (use -v to see invocation) [1/2] Linking C:\Users\eric\dev\sourcegear-bridge-lib-hook\.build\x86_64-unknown-windows-msvc\debug\sg_resolve_jumptable.dll
I could provide a minimal repro sample, but my actual case is nearly minimal already. The package is here:
My conjecture is that
swiftrt.obj should not be added to the build when there is no Swift code in the package.