Winit: linking with `link.exe` failed: exit code: 1120 - Windows 8.1 - glutin 0.22

Created on 10 Jan 2020  路  12Comments  路  Source: rust-windowing/winit

Only the new version on Windows build failed.
0.21.2 is ok. And MacOS is OK.

error: linking with `link.exe` failed: exit code: 1120
  |
  = note: "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\amd64_x86\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LARGEADDRESSAWARE" "/SAFESEH" "/LIBPATH:C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib" "F:\\Clone\\glutin\\target\\debug\\examples\\window.125x4tt57gs25caj.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.148kg703efbi0oxm.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.18w2hoo4ayjxziyf.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1ffdqenj3jojkelb.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1gab5zbfp53jot.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1i6dijzg2ag31nby.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1it5blx8nn7pqkh9.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1iuti4u1z0pd8kc6.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1ixnuffsalc0vmun.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1izf1hgprke4u2wj.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1qgtmdbzp2g9k3ll.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1ru8yonpjc4015b3.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1sd0qak67sy32k55.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1tdcjd81yhctt4fn.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1v695ezp0opj5ozj.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1w4mrvg4ghflswbw.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.1x5vobcyylkvhves.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.20ihnh6dt23uatvh.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.22rmogvhb1r6zaw8.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.23l96dofqnymi2hj.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.24rgbuodjr8q1psj.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.26io5gnber98jnme.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.27702slma1bfa1hk.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.28hsbh32159ynoff.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2a9xuxfy6cmq0moa.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2bjupd9e3xv735k1.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2cohbe6zd372ctjq.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2fwc7jdst598bxf5.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2g99cwstkg4k1vvs.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2jda2hqof7ftzxzc.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2k8tbfqkupah1vcs.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2kzo283s2obiwua4.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2l28beqq50wder1o.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2owu3vp2ohdq5w8j.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2sme8hnbixfn457m.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2yckv88tla8urts7.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.2zm29cftw2xl50n6.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.32hc7sdw5wcgacn6.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.359uj4eij27ie45x.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.38464yzfndu909ua.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3b8gvjgf62rgze0x.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3c7itajn18a8wpj4.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3etjlszmwcq2q5vj.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3ftcakmzyak11obw.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3j5d3hjdcy17cbim.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3jake317auxl1zbv.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3kutwobx0aj6t4th.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3lud5cho8mcpcrke.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3m5vki6m5jj9ogyt.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3mimzfu9fhmpc88f.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3pqqtf24z8d2vg8m.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3t6c47445jwaiu35.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3uyxayehbtnym70m.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3vqc9a2k1a2upasu.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3vreddqkfdhkvxca.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3vty6kdfxqb8e3x1.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3ws6c2sxw2a8ay6.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3x7ems3j15lp2ive.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3zc9o0lx8qwvhfgj.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.41f89y7ty6232cwm.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.41npkal3ycdwvzn7.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.43fvboaqhx7x0kym.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.49xwr8sxv9tambck.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4bzpjo97c8w4bi2p.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4cyj128h203z81es.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4e69514ne7hfi20b.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4grl7uvsp5fsadq1.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4ln8telsmjzd10tn.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4m9plg676dpvuv3p.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4mc7z3bi33apijep.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4n1mph7s4vspe6qm.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4nacfk8e0ncj8gcm.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4pdrz5mfe5ad0qb5.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4ruacn1db575lxte.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4u4vyngumbsbedqp.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.4yt414jfodo8w5se.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.52wqudmjd90ac9p5.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.573dy2ty1v5rt8f6.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.5cyv7szxrhiug6tw.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.5dwgmfus0jlp3wir.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.dkyzlr1xsgw6twu.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.h55y9waiogyehuo.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.jdfnv6btoyag5rz.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.jenrbc5vi4rqs78.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.kyf04v843idv54x.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.lxy2kl28eestz1a.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.mlz916uq7l69ikp.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.nowpb1ome804qyz.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.pvvm1x8siedapwd.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.t30esgdujbnhqe8.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.uld7mutnf1lhzgu.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.v45o7z2mmyd2l4u.rcgu.o" "F:\\Clone\\glutin\\target\\debug\\examples\\window.z6koc0hgwpogcru.rcgu.o" "/OUT:F:\\Clone\\glutin\\target\\debug\\examples\\window.exe" "F:\\Clone\\glutin\\target\\debug\\examples\\window.3jko3uyj7pt97qc7.rcgu.o" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/LIBPATH:F:\\Clone\\glutin\\target\\debug\\deps" "/LIBPATH:C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib" "F:\\Clone\\glutin\\target\\debug\\deps\\libtakeable_option-96f7c54917adc484.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libglutin-65e4a634f6ac03ca.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libglutin_wgl_sys-cc14d78e6ee66764.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libparking_lot-8283880d62f0def9.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libparking_lot_core-79aca2812d82f4ff.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libsmallvec-f1f949dc3c0672b5.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\liblibloading-d593e4651e339c99.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libwinit-44c0a4d7ba95e23c.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libraw_window_handle-4482c5b619d5a039.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\liblibc-3a50c18b935f8961.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libparking_lot-1b207276fdc7b42a.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libparking_lot_core-8c05d34a8885d4f4.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libsmallvec-af1aacd1225edcef.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\liblock_api-69cfe4b196f35cd8.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libscopeguard-1a4e6738cf8cc10e.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libinstant-12743464364a13e8.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libbitflags-ceb7a89d6ee494d2.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\liblog-853d2698de1cb99d.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libcfg_if-3aa8dc1f1dcc094f.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libglutin_egl_sys-b81754e2d027794b.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\libwinapi-1941b0c365aa6291.rlib" "F:\\Clone\\glutin\\target\\debug\\deps\\liblazy_static-0f7250a61fa53e5d.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\libstd-a2af7cbca70405c4.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\libpanic_unwind-8f8ad41ed0b34354.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\libhashbrown-3442ca764a847dfc.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\librustc_std_workspace_alloc-726244614f5a8f3a.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\libbacktrace-29b7599014a92286.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\librustc_demangle-519f7f7caa7ec7f2.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\libunwind-feba7334127a8724.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\libcfg_if-6d75d87de5ddb74c.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\liblibc-7dc5efd24952e919.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\liballoc-b95120d391119ce4.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\librustc_std_workspace_core-0e624f0b43962fb3.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\libcore-58985b8c03f907a8.rlib" "C:\\Users\\TakWolf\\.rustup\\toolchains\\stable-i686-pc-windows-msvc\\lib\\rustlib\\i686-pc-windows-msvc\\lib\\libcompiler_builtins-27c1b248396c205c.rlib" "opengl32.lib" "advapi32.lib" "comctl32.lib" "dwmapi.lib" "fwpuclnt.lib" "gdi32.lib" "kernel32.lib" "msimg32.lib" "ntdll.lib" "ole32.lib" "opengl32.lib" "setupapi.lib" "shcore.lib" "shell32.lib" "shlwapi.lib" "user32.lib" "uxtheme.lib" "winspool.lib" "ws2_32.lib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "msvcrt.lib"
  = note: window.43fvboaqhx7x0kym.rcgu.o : error LNK2019: unresolved external symbol _AdjustWindowRectExForDpi@20 referenced in function __ZN5winit13platform_impl8platform10event_loop22public_window_callback17h38d87ca6a00386b2E@24
          F:\Clone\glutin\target\debug\examples\window.exe : fatal error LNK1120: 1 unresolved externals

Windows needs investigation bug

Most helpful comment

This is caused by the fact that AdjustWindowRectExForDpi doesn't exist in User32.dll prior to Windows 10, as seen here in the minimum supported client section.
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-adjustwindowrectexfordpi

In this commit: https://github.com/rust-windowing/winit/commit/6ffd78767fc96162369374d6c5eacf2abd1bc9e9 adjust_window_rect changed from using AdjustWindowRectEx, which is present in Windows 7 & 8.1 to using AdjustWindowRectExForDpi, which is not.

All 12 comments

cc @Osspial

it seems the problem is glutin but not winit

This is caused by the fact that AdjustWindowRectExForDpi doesn't exist in User32.dll prior to Windows 10, as seen here in the minimum supported client section.
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-adjustwindowrectexfordpi

In this commit: https://github.com/rust-windowing/winit/commit/6ffd78767fc96162369374d6c5eacf2abd1bc9e9 adjust_window_rect changed from using AdjustWindowRectEx, which is present in Windows 7 & 8.1 to using AdjustWindowRectExForDpi, which is not.

it seems the problem is glutin but not winit

@TakWolf The second note is = note: window.43fvboaqhx7x0kym.rcgu.o : error LNK2019: unresolved external symbol _AdjustWindowRectExForDpi@20 referenced in function __ZN5winit13platform_impl8platform10event_loop22public_window_callback17h38d87ca6a00386b2E@24, and __ZN5winit13platform_impl8platform10event_loop22public_window_callback17h38d87ca6a00386b2E is the mangled name for a winit function.

@SubhumanPotato Hmmm, but isn't the function dynamically loaded in over here?

@goddessfreya Yes, and I get a runtime error rather than a link time error while running windows 7, so I'm not sure how that got caught at link time.
snip

This is caused by the fact that AdjustWindowRectExForDpi doesn't exist in User32.dll prior to Windows 10, as seen here in the minimum supported client section.
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-adjustwindowrectexfordpi

I've got the same linking error on Windows 10 that should support AdjustWindowRectExForDpi. So, this issue is not only for 7 or 8 but for 10, I think.
Installing the latest Build Tools for Visual Studio 2019 solved that problem in my environment.

@SubhumanPotato Hmmm, but isn't the function dynamically loaded in over here?

Looks like it's also linked in at compile time here and here in platform_impl/windows/event_loop.rs?

Thanks for reporting this. Could you see if #1398 addresses this for you?

Thanks for reporting this. Could you see if #1398 addresses this for you?

For me, it works. (#1398 On windows 8.1)

Hello, any news on when fix will be merged? Also is any patch will be published on crates.io in near future?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

francesca64 picture francesca64  路  4Comments

alexheretic picture alexheretic  路  4Comments

mistodon picture mistodon  路  4Comments

chrisduerr picture chrisduerr  路  3Comments

rukai picture rukai  路  4Comments