mingw-w64 / mingw-w64.github.io

mingw-w64.net web page contents (The new web page)
Other
559 stars 1.09k forks source link

xinput.lib in the MinGW is using DirectX SDK only xinput1_3.dll #28

Open walbourn opened 1 year ago

walbourn commented 1 year ago

The xinput library that comes with the MinGW toolset is linking to the XINPUT1_3.DLL. This DLL is only installed by the legacy DirectX End-User Runtime, so it's not present on all machines. Also, this DLL has known security issues.

A better solution is to have libxinput.a link to XINPUT9_1_0.DLL which is present on all Windows machines from Windows Vista forward.

Alternatively, use XINPUT1_4.DLL which is present on Windows 8.0 or later and is also inbox.

Biswa96 commented 1 year ago

I think xinput = xinput1_3 was set not to break backward compatibility. If a program need newer version, one can mention -lxinput1_4 explicitly.

The term 'old operating system' varies among users. Last commit was in 2010 https://github.com/mingw-w64/mingw-w64/commit/d3eee2938a099372fd0d4d352d0685a640b8466e

walbourn commented 1 year ago

Ah, I see the various versions now... There should be no need for 1_1 or 1_2 at all.

I'd still recommend making the xinput default be 9.1.0. The only scenario where xinput 1.3 is actually needed is Windows XP.