From 43786c12d90055b4f7226b825b3340639f137f93 Mon Sep 17 00:00:00 2001 From: shukenmg <18000205+shukenmg@users.noreply.github.com> Date: Tue, 22 Sep 2020 20:35:54 +0800 Subject: [PATCH] Automatic switching between 32 and 64-bit hidapi dlls (#542) - detect bitness of system and change dll appropriately automatically Co-authored-by: Shuken --- BetterJoyForCemu/BetterJoy.csproj | 5 ++++- BetterJoyForCemu/Program.cs | 20 ++++++++++++++++++++ BetterJoyForCemu/hidapi.dll | Bin 19456 -> 0 bytes BetterJoyForCemu/x64/hidapi.dll | Bin 0 -> 18432 bytes BetterJoyForCemu/x86/hidapi.dll | Bin 0 -> 14336 bytes 5 files changed, 24 insertions(+), 1 deletion(-) delete mode 100644 BetterJoyForCemu/hidapi.dll create mode 100644 BetterJoyForCemu/x64/hidapi.dll create mode 100644 BetterJoyForCemu/x86/hidapi.dll diff --git a/BetterJoyForCemu/BetterJoy.csproj b/BetterJoyForCemu/BetterJoy.csproj index 292a02b..22fb2e8 100644 --- a/BetterJoyForCemu/BetterJoy.csproj +++ b/BetterJoyForCemu/BetterJoy.csproj @@ -236,7 +236,10 @@ - + + Always + + Always diff --git a/BetterJoyForCemu/Program.cs b/BetterJoyForCemu/Program.cs index 67bcd60..24e67e6 100644 --- a/BetterJoyForCemu/Program.cs +++ b/BetterJoyForCemu/Program.cs @@ -516,6 +516,10 @@ namespace BetterJoyForCemu { private static string appGuid = "1bf709e9-c133-41df-933a-c9ff3f664c7b"; // randomly-generated static void Main(string[] args) { + + // Set the correct DLL for the current OS + SetupDlls(); + using (Mutex mutex = new Mutex(false, "Global\\" + appGuid)) { if (!mutex.WaitOne(0, false)) { MessageBox.Show("Instance already running.", "BetterJoy"); @@ -528,5 +532,21 @@ namespace BetterJoyForCemu { Application.Run(form); } } + + static void SetupDlls() { + const int LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x00001000; + SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_DEFAULT_DIRS); + AddDllDirectory(Path.Combine( + AppDomain.CurrentDomain.BaseDirectory, + Environment.Is64BitProcess ? "x64" : "x86" + )); + } + + // Helper funtions to set the hidapi dll location acording to the system instruction set. + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + static extern bool SetDefaultDllDirectories(int directoryFlags); + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + static extern void AddDllDirectory(string lpPathName); } } diff --git a/BetterJoyForCemu/hidapi.dll b/BetterJoyForCemu/hidapi.dll deleted file mode 100644 index 28c267ae0aacea3420bfc3570ae991f89729be0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19456 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 Bcm@Cf literal 0 HcmV?d00001 diff --git a/BetterJoyForCemu/x86/hidapi.dll b/BetterJoyForCemu/x86/hidapi.dll new file mode 100644 index 0000000000000000000000000000000000000000..9998cca0ea52b29583b8ce7d916f22eec69ea08c GIT binary patch literal 14336 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 literal 0 HcmV?d00001