google / shaderc-rs

Rust bindings for the shaderc library.
https://docs.rs/shaderc
Apache License 2.0
261 stars 64 forks source link

[Possible Regression] Link failure on `1.67-x86_64-pc-windows-msvc` #133

Closed kanerogers closed 1 year ago

kanerogers commented 1 year ago

Background

Hi, there!

Since updating my toolchain to 1.67-x86_64-pc-windows-msvc I am now unable to build a crate that depends on shaderc. If I create a simple project with:

cargo new shaderc_test
cd shaderc_test
cargo add shaderc

And modify src/main.rs to:

use shaderc::Compiler;

fn main() {
    let compiler = Compiler::new().unwrap();
    println!("Hello, world!");
}

cargo build will give the following error:

error: linking with `link.exe` failed: exit code: 1377
  |
  = note: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.31.31103\\bin\\HostX64\\x64\\link.exe" "/NOLOGO" "C:\\Users\\enaku\\AppData\\Local\\Temp\\rustcS8yjpU\\symbols.o" "C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\shaderc_test.1da0qcrv6jcb53ue.rcgu.o" "C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\shaderc_test.1wke1ryfpb9g28wy.rcgu.o" "C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\shaderc_test.2o68n2l8aqsfxyeo.rcgu.o" "C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\shaderc_test.397bbwv6md8qefv4.rcgu.o" "C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\shaderc_test.44uaa13kd8y7oxw7.rcgu.o" "C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\shaderc_test.47hytwwgw7qau3s4.rcgu.o" "C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\shaderc_test.ifxhz3lrx3e199n.rcgu.o" "C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\shaderc_test.1v2gxaxgar1yn8k7.rcgu.o" "/LIBPATH:C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps" "/LIBPATH:C:\\VulkanSDK\\1.3.211.0\\Lib" "/LIBPATH:C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\libshaderc-abccb43ce05b4ccd.rlib" "C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\libshaderc_sys-5ba1156ecedc7241.rlib" "C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\liblibc-3a1484c748211e20.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-d948d7ba3a1428f8.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-160203b957826e76.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle-b24bd95fe5d36805.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd_detect-0e9d70f22be1c0d7.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libhashbrown-b095d6ec0de2c748.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libminiz_oxide-fb910d16a05b94c5.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libadler-3a4bfb6892558bf2.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_alloc-a9e6a5964ad33a4c.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-213bb51833c43573.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcfg_if-4140ea5b1ce3650e.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-9a1df03c8e50ccf9.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-860856f6a77183a1.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-d38e1b9df5cea3b4.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-b993f6ac479af571.rlib" "C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-3f0eed38bcc54ffc.rlib" "legacy_stdio_definitions.lib" "kernel32.lib" "advapi32.lib" "userenv.lib" "kernel32.lib" "ws2_32.lib" "bcrypt.lib" "msvcrt.lib" "legacy_stdio_definitions.lib" "/NXCOMPAT" "/LIBPATH:C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "/OUT:C:\\Users\\enaku\\Documents\\Development\\shaderc_test\\target\\debug\\deps\\shaderc_test.exe" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/NATVIS:C:\\Users\\enaku\\.rustup\\toolchains\\1.67-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libstd.natvis"
  = note: libshaderc_sys-5ba1156ecedc7241.rlib(ShaderLang.obj) : fatal error LNK1377: '??_EIncluder@TShader@glslang@@UEAAPEAXI@Z' symbol not found in object. The containing library is corrupt.

warning: `shaderc_test` (bin "shaderc_test") generated 1 warning
error: could not compile `shaderc_test` due to previous error; 1 warning emitted

If I switch my toolchain back to 1.66 with rustup default 1.66, then everything builds fine.

Some further notes:

warning: shaderc: searching native shaderc libraries in Vulkan SDK 'C:\VulkanSDK\1.3.211.0/lib'
warning: shaderc: Windows MSVC static build is experimental
kanerogers commented 1 year ago

This appears to be fixed by https://github.com/rust-lang/rust/pull/107360