Delphi adaptation of MemoryModule for loading DLLs directly from memory, enabling standalone executables.
Delphi_MemoryModule is a Delphi adaptation of the MemoryModule library that enables loading and executing DLLs directly from memory rather than from disk. It solves the problem of distributing multiple DLL files by allowing developers to embed dependencies within a single executable, creating standalone applications.
Delphi and Lazarus developers who need to distribute self-contained executables without external DLL dependencies, or those integrating with third-party libraries that require dynamic loading.
It provides a transparent, hook-based mechanism to switch between memory and disk loading, ensuring compatibility with existing code and third-party interfaces while simplifying deployment.
Delphi adaptation of MemoryModule — load DLL from memory. Also includes hooking utilities.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Loads DLLs directly from memory streams, eliminating separate files and enabling standalone executables, as shown in the demo with TMemoryStream usage.
Includes hook units that allow seamless switching between memory and standard WinAPI loading without code changes, ensuring compatibility with existing patterns.
Works with dynamic-load interfaces like Interbase Express components, enabling use with libraries unaware of memory loading, as tested in the demo.
Tested under RAD Studio XE2, XE6 (32/64-bit), and Lazarus (32-bit), providing broad coverage for Delphi developers across environments.
The README admits that resource loading, exe loading, custom functions, and user data are not implemented yet, limiting functionality for advanced use cases.
Based on MemoryModule.c for Windows DLL loading, it cannot be used for cross-platform projects on Linux or macOS, restricting its applicability.
Loading DLLs from memory can complicate debugging by obscuring standard tools and error messages, making troubleshooting more difficult than disk-based loading.