0

My cargo project depends on libmagic on vcpkg. I am using a crate called 'cargo-vcpkg' to manage my C deps and the crate magic provides bindings for that library.
I am on the latest version of Windows 11 64 Bit

My dependencies in Cargo.toml look as follows -

[package]
...

[dependencies]
magic = "0.13.0"
...

[package.metadata.vcpkg]
git = "https://github.com/microsoft/vcpkg"
rev = "master"
dependencies = ["libmagic:x64-windows-static"]

I have run cargo vcpkg build to compile deps to dll files. However, trying to build my project using cargo build or cargo run I get the following error -

error: linking with `link.exe` failed: exit code: 1181
  |
  = note: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.36.32532\\bin\\HostX64\\x64\\link.exe" "/NOLOGO" "C:\\Users\\Aneesh\\AppData\\Local\\Temp\\rustcYqpdl0\\symbols.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.152qdkerunruxlqv.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.1na65qeveik0qnpq.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.22n0x11id0zf6hiv.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.28tmfw8517vjdlmu.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.2gfxobmw3h98vo1m.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.3bg3vv1eyq0p7udf.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.3ccpwil2kk68vish.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.3wx5dp82njfwzazw.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.44fbvxv1wr6ykiz.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.4f6vo3uh66np7th4.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.4j6dbetzj5qfqm14.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.4mpznxwgvbbni019.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.4q0reje1o97ppegu.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.555s2h2oscidcxxi.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.57h1itq083jjremb.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.586g5zuj6j23g4ja.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.cihb7uubmxyo720.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.sa88ub53ueep7rf.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.yn3urfo1ou5tt8o.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.zpgo9dggrfd8nup.rcgu.o" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.4rv3n8fl9pkyt9pq.rcgu.o" "/LIBPATH:C:\\code-projects\\rs-scanner\\target\\debug\\deps" "/LIBPATH:C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libmagic-cb25c5444dddd9d6.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libthiserror-a8e3d939053c7cbd.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\liberrno-a73d78a339d97992.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libbitflags-238d36ea99b67de1.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libmagic_sys-9056894aa60c1ef8.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libdotext-3fb72eda7bdda76e.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libzip-d19bcb5dbafbf57c.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libpodio-0138f35bfb8141fb.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libmsdos_time-50fe6c8c1215e9fa.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libtime-20d4860c002a2be9.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libflate2-f9b22d867ad504e1.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libminiz_oxide-66f7887b6aad37b7.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libadler-1116f4304d1673ea.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libcrc32fast-78cb9ea565c30f1a.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libquick_xml-29750ab50af99bc0.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libmemchr-906ccb6e1de1661e.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\liblibc-4d1e58e66fd338fe.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\liberror_chain-af01b26ea8a44293.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libbacktrace-ed65579888b8fe68.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\librustc_demangle-899df4110a728f86.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libencoding_rs-30651bbb6b14fc5a.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libcfg_if-6fd6fae1aec07fe0.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libaho_corasick-fc942a1d303f6d35.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libmemchr-c0fbe447489da9b2.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libsnafu-80a83afec7c1409c.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libdoc_comment-c5c1ad394bc426e5.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libwalkdir-ddb0bca90507e1b0.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libsame_file-7e57d0559f18daae.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libwinapi_util-e22c32a9cdf592de.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libwinapi-97715c78c457b800.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\librayon-a3ec2a1cd875fb3e.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\librayon_core-8a1afbd866efc3fe.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libnum_cpus-7e9a3c2c49a19d10.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libcrossbeam_deque-37df0e2c80518ba0.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libcrossbeam_epoch-3ed081d8c7288141.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libmemoffset-2bfda58f6c387739.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libscopeguard-2f60b7f0eb7b7422.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libcrossbeam_channel-dcc8c793356e2f36.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libcrossbeam_utils-20f55305a540803b.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libcfg_if-5ddb140102fcb6a2.rlib" "C:\\code-projects\\rs-scanner\\target\\debug\\deps\\libeither-07d6d1ee9e96223b.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-391022a4250a8b9a.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-3069c74fd845ecc2.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle-cae8325b8f11cb55.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd_detect-6ecbb4a24be3ec33.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libhashbrown-7cef55517a70b408.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libminiz_oxide-d1e72b1788c7e8f6.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libadler-65d80753bac4b1a6.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_alloc-932a6231bea08890.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-04ed514427316340.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcfg_if-9b75e26b1d0a074f.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-95c2795d82b7b742.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-1bf02ac2d8cdb80a.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-117dfa1fe8688bcf.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-9ac5797c0b4842d0.rlib" "C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-ad271357e078d260.rlib" "magic.lib" "legacy_stdio_definitions.lib" "kernel32.lib" "advapi32.lib" "cfgmgr32.lib" "gdi32.lib" "kernel32.lib" "msimg32.lib" "opengl32.lib" "user32.lib" "winspool.lib" "kernel32.lib" "advapi32.lib" "userenv.lib" "kernel32.lib" "ws2_32.lib" "bcrypt.lib" "ntdll.lib" "msvcrt.lib" "legacy_stdio_definitions.lib" "/NXCOMPAT" "/LIBPATH:C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "/OUT:C:\\code-projects\\rs-scanner\\target\\debug\\deps\\rs_scanner.exe" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/NATVIS:C:\\Users\\Aneesh\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libstd.natvis"
  = note: LINK : fatal error LNK1181: cannot open input file 'magic.lib'

Which suggests the file magic.lib does not exist.

My folder tree looks as follows -
Project-Dir

  • src/
  • ...
  • vcpkg/
    • bin/installed/x64-windows-static/lib/magic.lib
  • Cargo.toml

I have tried the following -

  • Cleaning and re-running cargo vcpkg build
  • Manually running vcpkg integrate install in vcpkg dir
  • Using a different magic binding crate called magic-sys
  • Reinstalling C++ Build Tools from Visual Studio 2019 Installer

1 Answers1

0

Most rust binding libraries have their own build commands, which are automatically applied to linking just by specifying them.

The magic library uses magic-sys internally for post-build linking. If you need to specify a version, you can modify it using features in magic-sys.

If you need a static build, you need to clone the magic and magic-sys repositories, modify them locally, and specify them using path = "../path".

Eveheeero
  • 52
  • 5
  • I see, I'll move my magic.lib somewhere it expects since I'm going to be the person distributing this. Also is there a way to get static libs for Linux as well (through vcpkg?) – Aneesh Bhave Jun 28 '23 at 09:12
  • I checked magic sys. I don't understand where it *expects* libmagic to be present. Any ideas? – Aneesh Bhave Jun 28 '23 at 16:52
  • @AneeshBhave Sorry about that. The features specify that you can select multiple versions, so I assumed it would build automatically. I looked at https://github.com/robo9k/rust-magic-sys/blob/main/build.rs and it seems that on Linux, given the MAGIC_DIR environment variable, it tries to link by checking if the MAGIC_STATIC environment variable is false, and on Windows it tries to link using vcpkg. Is this what you want? – Eveheeero Jun 29 '23 at 00:37
  • you can also find it from https://github.com/robo9k/rust-magic-sys README – Eveheeero Jun 29 '23 at 00:39
  • I see the following in the readme - ---------------------------------------------------------------------------------------- You can use Microsoft's vcpkg via vcpkg-rs and cargo-vcpkg. If you choose the latter, that means you'll have to: cargo install cargo-vcpkg cargo vcpkg build ---------------------------------------------------------------------------------------- I did this, but why does my program not compile? – Aneesh Bhave Jun 29 '23 at 08:22