Skip to content

Version 0.5.0: Cargo Tries to link to SspiCli.dll instead of Secur32.dll when using GetUserNameExA() #627

Closed
@vegardw

Description

@vegardw

When trying to use GetUserNameExA(), cargo build tries to link to SspiCli.dl using non-existing file SspiCli.lib instead of Secur32.dll using Secur32.lib, and build fails. I have the Windows 10 SDK installed and Secur32.lib is included in the SDK, so linking with that would succeed.

Steps to reproduce

Create a new project with the following:

Cargo.toml

[package]
name = "seclib"
version = "0.1.0"
edition = "2018"

[dependencies]
windows = "0.5.0"

[build-dependencies]
windows = "0.5.0"

build.rs

fn main() {
    windows::build!(
        windows::win32::windows_programming::GetUserNameExA
    );
  }
  

src\main.rs

#![allow(dead_code)]
#![allow(unused_imports)]

mod bindings {
    ::windows::include_bindings!();
}


use bindings::windows::win32::windows_programming::GetUserNameExA;

fn main() {
    println!("Hello, world!");
}

Expected results

project is linked with secur32.dll library and is linked successfully when executing cargo build

Actual results

cargo build tries to link to SspiCli.dl using non-existing file SspiCli.lib, and build fails

PS C:\Users\vegard\source\repos\seclib> cargo build
   Compiling seclib v0.1.0 (C:\Users\vegard\source\repos\seclib)
error: linking with `link.exe` failed: exit code: 1181
  |
  = note: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.28.29910\\bin\\HostX64\\x64\\link.exe" "/NOLOGO" 
"/NXCOMPAT" "/LIBPATH:C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\seclib.1hpx7l8yy80fv79s.rcgu.o" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\seclib.1w4z1sgbrtqnze7z.rcgu.o" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\seclib.2fs4c3n89fhjdvfv.rcgu.o" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\seclib.2qslwrgqz64qcgqv.rcgu.o" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\seclib.3reqzfqie3wgb0fq.rcgu.o" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\seclib.411tlv2x1c6j2qno.rcgu.o" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\seclib.k435cl9zshn99or.rcgu.o" "/OUT:C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\seclib.exe" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\seclib.14z1cf9we081h8dx.rcgu.o" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/NATVIS:C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libstd.natvis" "/LIBPATH:C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps" "/LIBPATH:C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "SspiCli.lib" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\libwindows-8bd0580c6cfa550c.rlib" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\libconst_sha1-b23143bff14a823b.rlib" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\libwindows_gen-07bcc77ef0066c8f.rlib" "C:\\Users\\vegard\\source\\repos\\seclib\\target\\debug\\deps\\libsquote-7f66eb9f64fa600d.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-0087fff1d6c84113.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-e9a9adcb7b282f86.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle-c17bc77d789f8359.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libhashbrown-1f739c53c46039b3.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_alloc-b12f9afb50af9e82.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-4813d8391ae0f1e1.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcfg_if-a6dfd598b03abbd4.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-8e04de9ca6363561.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-05126e82a7fe403c.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-7f3e1ef8417012fa.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-df80c014103f27c5.rlib" "C:\\Users\\vegard\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-f404d34c325d6d79.rlib" "OLEAUT32.lib" "OLEAUT32.lib" "OLEAUT32.lib" "OLEAUT32.lib" "OLEAUT32.lib" "OLE32.lib" "OLE32.lib" "OLE32.lib" "OLE32.lib" "OLE32.lib" "KERNEL32.lib" "KERNEL32.lib" "KERNEL32.lib" "KERNEL32.lib" "KERNEL32.lib" "KERNEL32.lib" "KERNEL32.lib" "KERNEL32.lib" "KERNEL32.lib" "KERNEL32.lib" "KERNEL32.lib" "KERNEL32.lib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "msvcrt.lib"
  = note: LINK : fatal error LNK1181: cannot open input file 'SspiCli.lib'


error: aborting due to previous error

error: could not compile `seclib`

To learn more, run the command again with --verbose.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions