diff --git a/Console/Utils.cs b/Console/Utils.cs index c56852e..c86c446 100644 --- a/Console/Utils.cs +++ b/Console/Utils.cs @@ -1,5 +1,6 @@ using System.Reflection; using DbUp; +using NativeLibraryManager; using PortAudioSharp; using Terminal.Gui; @@ -11,7 +12,47 @@ public static class Utils public static void ConfigurePlatformDependencies() { - PortAudio.LoadNativeLibrary(); + ResourceAccessor resourceAccessor = new(Assembly.GetExecutingAssembly()); + + // Define library items for different platforms and architectures + var libraries = new LibraryManager( + // Linux + new LibraryItem( + Platform.Linux, + Bitness.x64, + new LibraryFile("libportaudio.so", resourceAccessor.Binary("libportaudio.so")) + ), + new LibraryItem( + Platform.Linux, + Bitness.x64, + new LibraryFile("libportaudio.a", resourceAccessor.Binary("libportaudio.a")) + ), + new LibraryItem( + Platform.Linux, + Bitness.x32, + new LibraryFile("libportaudio.so", resourceAccessor.Binary("libportaudio.so")) + ), + // macOS + new LibraryItem( + Platform.MacOs, + Bitness.x64, + new LibraryFile("libportaudio.dylib", resourceAccessor.Binary("libportaudio.dylib")) + ), + // Windows + new LibraryItem( + Platform.Windows, + Bitness.x64, + new LibraryFile("portaudio.dll", resourceAccessor.Binary("portaudio.dll")) + ), + new LibraryItem( + Platform.Windows, + Bitness.x32, + new LibraryFile("portaudio.dll", resourceAccessor.Binary("portaudio.dll")) + ) + ); + + // Load the appropriate library + libraries.LoadNativeLibrary(); PortAudio.Initialize(); }