-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Open
Description
Reproducer: Linux + Clang (Working) Windows + MSVC (Linker error)
Run cmake --build build --config release
[1/12] Scanning D:\a\fmttest\fmttest\main.cpp for CXX dependencies
[2/12] Scanning "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\modules\std.compat.ixx" for CXX dependencies
std.compat.ixx
[3/12] Scanning D:\a\fmttest\fmttest\thirdparty\module-ports\fmt.cc for CXX dependencies
[4/12] Scanning "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\modules\std.ixx" for CXX dependencies
std.ixx
[5/12] Generating CXX dyndep file CMakeFiles\__cmake_cxx23.dir\CXX.dd
[6/12] Generating CXX dyndep file CMakeFiles\fmttest.dir\CXX.dd
[7/12] Building CXX object CMakeFiles\__cmake_cxx23.dir\C_\Program_Files\Microsoft_Visual_Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\modules\std.ixx.obj
std.ixx
[8/12] Building CXX object CMakeFiles\__cmake_cxx23.dir\C_\Program_Files\Microsoft_Visual_Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\modules\std.compat.ixx.obj
std.compat.ixx
[9/12] Linking CXX static library __cmake_cxx23.lib
[10/12] Building CXX object CMakeFiles\fmttest.dir\thirdparty\module-ports\fmt.cc.obj
D:\a\fmttest\fmttest\thirdparty\module-ports\fmt.cc(97): warning C5050: Possible incompatible environment while importing module 'std': _UTF8 is defined in current command line and not in module command line
[11/12] Building CXX object CMakeFiles\fmttest.dir\main.cpp.obj
D:\a\fmttest\fmttest\main.cpp(1): warning C5050: Possible incompatible environment while importing module 'std': _UTF8 is defined in current command line and not in module command line
[12/12] Linking CXX executable fmttest.exe
FAILED: [code=4294967295] fmttest.exe
C:\Windows\system32\cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_exe --msvc-ver=1944 --intdir=CMakeFiles\fmttest.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\mt.exe --manifests -- C:\PROGRA~1\MICROS~2\2022\ENTERP~1\VC\Tools\MSVC\1444~1.352\bin\Hostx64\x64\link.exe /nologo CMakeFiles\fmttest.dir\main.cpp.obj CMakeFiles\fmttest.dir\thirdparty\module-ports\fmt.cc.obj /out:fmttest.exe /implib:fmttest.lib /pdb:fmttest.pdb /version:0.0 /machine:x64 /INCREMENTAL:NO /subsystem:console /INCREMENTAL:NO /LTCG vcpkg_installed\x64-windows-release\lib\fmt.lib __cmake_cxx23.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && C:\Windows\system32\cmd.exe /C "cd /D D:\a\fmttest\fmttest\build && "C:\Program Files\PowerShell\7\pwsh.exe" -noprofile -executionpolicy Bypass -file C:/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary D:/a/fmttest/fmttest/build/fmttest.exe -installedDir D:/a/fmttest/fmttest/build/vcpkg_installed/x64-windows-release/bin -OutVariable out""
LINK: command "C:\PROGRA~1\MICROS~2\2022\ENTERP~1\VC\Tools\MSVC\1444~1.352\bin\Hostx64\x64\link.exe /nologo CMakeFiles\fmttest.dir\main.cpp.obj CMakeFiles\fmttest.dir\thirdparty\module-ports\fmt.cc.obj /out:fmttest.exe /implib:fmttest.lib /pdb:fmttest.pdb /version:0.0 /machine:x64 /INCREMENTAL:NO /subsystem:console /INCREMENTAL:NO /LTCG vcpkg_installed\x64-windows-release\lib\fmt.lib __cmake_cxx23.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST:EMBED,ID=1" failed (exit code 1120) with the following output:
main.cpp.obj : error LNK2001: unresolved external symbol "struct _iobuf * __cdecl fmt::v12::detail::get_file(class std::basic_filebuf<char,struct std::char_traits<char> > &)" (?get_file@detail@v12@fmt@@YAPEAU_iobuf@@AEAV?$basic_filebuf@DU?$char_traits@D@std@@@std@@@Z)
fmttest.exe : fatal error LNK1120: 1 unresolved externals
ninja: build stopped: subcommand failed.
Error: Process completed with exit code 1.
fmt::println("Hello world") is okay, fmt::println(std::cost, "Hello world") or fmt::println(std::cerr, "Hello world") is broken in MSVC. I'm using 12.1.0 and C++20 module with -DFMT_IMPORT_STD -DFMT_ATTACH_TO_GLOBAL_MODULE compile definitions. This error is not occurred when using Clang + libc++.
IRainman
Metadata
Metadata
Assignees
Labels
No labels