It seems that using the LLVM toolchain without DLL runtime libraries generates some warning.
Visual Studio 2022 (17.2.4)
Note: This was working properly in Visual Studio 2019.
Repro
- Install Visual Studio 2022 with LLVM toolset support
- Create a new C++ console App Project
- Change the Project property General => Platform Toolset from Visual Studio 2022 to LLVM
- Compile the project (should be compiling fine)
- Change the Project property C/C++ => Code Generation => Runtime Library from Multi-threaded debug DLL to Multi-threaded debug
- Compile the Project (it should give you warnings)
Excerpt of the warnings:
1>------ Build started: Project: ConsoleApplication1, Configuration: Debug x64 ------
1>lld-link : warning : procedure symbol record for `std::out_of_range::~out_of_range` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\xthrow.obj refers to PDB item index 0x1357 which is not a valid function ID record
1>lld-link : warning : procedure symbol record for `std::out_of_range::`scalar deleting destructor'` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\xthrow.obj refers to PDB item index 0x1356 which is not a valid function ID record
1>lld-link : warning : procedure symbol record for `_vsprintf_s_l` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\locale.obj refers to PDB item index 0x12D9 which is not a valid function ID record
1>lld-link : warning : procedure symbol record for `sprintf_s` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\locale.obj refers to PDB item index 0x12E0 which is not a valid function ID record
1>lld-link : warning : procedure symbol record for `std::_Iterator_base12::_Iterator_base12` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\wlocale.obj refers to PDB item index 0x1339 which is not a valid function ID record
1>lld-link : warning : procedure symbol record for `std::_Iterator_base12::~_Iterator_base12` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\wlocale.obj refers to PDB item index 0x133B which is not a valid function ID record
1>lld-link : warning : procedure symbol record for `std::_Iterator_base12::operator=` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\wlocale.obj refers to PDB item index 0x133A which is not a valid function ID record
1>lld-link : warning : procedure symbol record for `std::_Iterator_base12::_Adopt` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\wlocale.obj refers to PDB item index 0x133C which is not a valid function ID record
1>lld-link : warning : procedure symbol record for `std::_Iterator_base12::_Assign_locked` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\wlocale.obj refers to PDB item index 0x133F which is not a valid function ID record
1>lld-link : warning : procedure symbol record for `std::_Iterator_base12::_Assign_unlocked` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\wlocale.obj refers to PDB item index 0x133E which is not a valid function ID record
1>lld-link : warning : procedure symbol record for `std::_Iterator_base12::_Getcont` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\wlocale.obj refers to PDB item index 0x133D which is not a valid function ID record
1>lld-link : warning : procedure symbol record for `wmemset` in D:\a\_work\1\s\Intermediate\vctools\libcpmt.nativeproj_658832323\objd\amd64\wlocale.obj refers to PDB item index 0x12EC which is not a valid function ID record
. . .
Note: Associated stackoverflow question
https://stackoverflow.com/questions/72687650/getting-a-visual-studio-2022-clang-linking-error-on-libcpmt-about-some-pdb-issue/73017196#73017196