A delegate-based C# P/Invoke alternative that uses interfaces to bind native code, compatible with all .NET platforms and runtimes.
AdvancedDLSupport is a C# library that provides a delegate-based alternative to traditional Platform Invocation Services (P/Invoke) for calling native code from managed .NET applications. It solves the platform compatibility issues and performance limitations of standard P/Invoke by allowing developers to bind native APIs through C# interfaces rather than static extern methods.
C# developers working with native libraries across multiple platforms and runtimes, particularly those frustrated with P/Invoke limitations in Mono, .NET Framework, .NET Core, or .NET Standard environments.
Developers choose AdvancedDLSupport for its significantly faster performance (2-8x speed improvements), cleaner object-oriented API using interfaces instead of static methods, and seamless compatibility across all .NET runtimes without platform-specific workarounds.
Delegate-based C# P/Invoke alternative - compatible with all platforms and runtimes.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks show 2-8x speed improvements over traditional P/Invoke through optimized delegate-based calls, as documented in the indirect calling guide.
Replaces static extern methods with C# interfaces, allowing native APIs to be treated as first-class objects and integrated seamlessly into managed code, reducing clutter.
Works across Mono, .NET Framework, .NET Core, and .NET Standard with built-in Mono DllMap support, eliminating platform-specific workarounds.
Enables dynamic selection of library architectures and names at runtime with swappable search algorithms, as highlighted in the features list.
The LGPLv3 license requires disclosing source code modifications or dynamic linking, which can be problematic for closed-source commercial projects without custom licensing.
For straightforward interop scenarios, the interface-based setup and additional dependency might introduce unnecessary complexity compared to simple P/Invoke.
Relies on an external library rather than built-in .NET features, potentially increasing maintenance and compatibility risks over time.