Skip to content

Generate standalone libs so that projects can link without the Windows SDK #142

Closed
@Boddlnagg

Description

@Boddlnagg

In a prototype, I migrated from winrt-rust to winrt-rs in my MIDI library midir, see Boddlnagg/midir#56.

In the CI for that project, I also test building with the windows-gnu toolchain, and apparently it doesn't work with winrt-rs. I'm getting a linker error:

error: linking with `i686-w64-mingw32-gcc` failed: exit code: 1
  |
  = note: "i686-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-nostdlib" "-Wl,--large-address-aware" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\crt2.o" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\rsbegin.o" "-L" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.178gp5vv20m57swx.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.17lqo5gaw6vbpgvd.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.18bbq33bsjqkmi22.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.1h35mts5zdb7dspg.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.1h9u4ot3xckd33qs.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.1o1av9at7wet31bv.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.1r1zb1hc9v0oq0tp.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.1u7jitfxdw3jfgap.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.1uq02ga3avw5bj73.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.1uxwgv9lny6edhlc.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.1vix29wqqy997fjw.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.21mafq2uumgdjehv.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.21w5c3u2wtlgfiwq.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.270t5ey7193k7xxk.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.29l55o8s492q4qnb.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.29qtaphadllj0lgd.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.2aokq0d3ju5suxb2.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.2bbn825gtd53pwi1.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.2djlwiar9rh5ei4a.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.2dokhz5azweb3z6n.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.2eawyd7m64iqrjwu.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.2enw982yw7lthfez.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.2hrqxtnf0m5dmtpa.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.2jnrhas7zg1iisbd.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.2n6bwjn58o7x5zi7.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.2za4vdj8iu7ljzl2.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.36tuhlc5sspdebep.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.371zpbswlzqqugxm.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.3hcu3ipjb2wwdfb1.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.3t01tzuwloqvzz7m.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.3wh8dlo6faggud5w.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.440zbndm6qxljc6b.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.45eni2xrvra92ghb.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.47c82fenc3oyn4zq.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.498y9nru3bliwp6r.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.4fpwe8vlwtdgyshy.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.4lfyx6g2i7380t96.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.4m2lympeawq8j42q.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.4m32gle9cevzwojv.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.4omt98q1wokpzi7.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.4ttjsb5of4hc058m.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.56h0jnutigp2bc6a.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.5ceeh4k8i945be7w.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.5cj344q3oy347f50.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.5cnjrvj6id44idaf.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.60hhllpsfol0bi9.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.ns6d6t3e5cxt7q2.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.rwae5zwc3shkvmh.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.wd4pu6uusa0saa7.rcgu.o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.wj9ofnamozf46f0.rcgu.o" "-o" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.exe" "D:\\a\\1\\s\\target\\debug\\examples\\test_list_ports-2cb3d4fa0b8bc5c0.1emjpbadwe256i0s.rcgu.o" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "D:\\a\\1\\s\\target\\debug\\deps" "-L" "C:\\Users\\VssAdministrator\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\winapi-i686-pc-windows-gnu-0.4.0\\lib" "-L" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib" "-Wl,-Bstatic" "D:\\a\\1\\s\\target\\debug\\deps\\libmidir-5846db035084a76c.rlib" "D:\\a\\1\\s\\target\\debug\\deps\\libwinrt-43c07baecdee4529.rlib" "D:\\a\\1\\s\\target\\debug\\deps\\libsha1-1251e7be80ac93cd.rlib" "D:\\a\\1\\s\\target\\debug\\deps\\libmemalloc-edf20606f7aab321.rlib" "-Wl,--start-group" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\libstd-bd1b8695fe14e411.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\libpanic_unwind-f5df88057745cf1d.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\libhashbrown-b032eaab07efddbb.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-2d7265cf9e3a6fe1.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\libbacktrace-57721ece4aa20e6a.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\libbacktrace_sys-9b62612959cb7cdc.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\librustc_demangle-bd8fdd40f76804fd.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\libunwind-6840040bfdf00f27.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\libcfg_if-ba28ff170a75e142.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\liblibc-d645c440bd72b41b.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\liballoc-6b2a5dbd177e6684.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\librustc_std_workspace_core-ba2b6b2c16212cce.rlib" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\libcore-4723b0041a858cf9.rlib" "-Wl,--end-group" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\libcompiler_builtins-088cd71181439166.rlib" "-Wl,-Bdynamic" "-lkernel32" "-lonecore" "-ladvapi32" "-lws2_32" "-luserenv" "-Wl,-Bstatic" "-lgcc_eh" "-lpthread" "-Wl,-Bdynamic" "-lmingwex" "-lmingw32" "-lgcc" "-lmsvcrt" "-lmsvcrt" "-luser32" "-lkernel32" "C:\\Rust\\.rustup\\toolchains\\stable-i686-pc-windows-gnu\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\rsend.o"
  = note: ld: cannot find -lonecore

The requirement to link with onecore seems to come from https://github.com/microsoft/winrt-rs/blob/ed46a71f506c343b3eb4fa6c15a4d9db1397ebcf/src/runtime.rs#L15-L24.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions