About Native Mods
Intended for communities who want to try out using Reloaded or transitioning to the mod loader or have a niche reason to use C/C++, Reloaded II has limited support for native C/C++ modifications compiled as DLLs. As standard, this is implemented through the use of DLL Exports.
Native mods lack access to components such as the mod loader API but can use some limited mod loader functionality, such as Resume and Suspend provided the right exports are available.
Just like any other mods, native mods with Reloaded require for
ModConfig.json to be present. This file must be present to allow the loader to know which DLL to load.
You can control which file the mod loader will load for x64 and x86 processes using the following config entries:
"ModNativeDll32": "LostWorldQuickBoot.dll", "ModNativeDll64": "",
Reloaded tries to start mods by using the following entry points in order:
If none of these entry points is found, the mod will not be loaded. The exported methods should have no parameters and return void.
Suspend, Resume, Unload:
Reloaded II's Resume, Suspend and Unload functionalities are available for native mods.
Virtually identical to their C# counterparts in the
IMod interface, they require the following exports:
CanSuspend are defined as
bool fn() while
Resume' and 'Unload are defined as
That said, if you are hooking/detouring functions I would strongly advise against implementing these interfaces unless you know what you are doing.
Specifically, you will need to use a good hooking/detouring library that fully respects stacked function hooks. It must allow for hook deactivation in a way that avoids touching both your C++ DLL and overwriting the original prologue of the hooked function.
Here is an example of how such a hooking library may be implemented: Reloaded.Hooks.
Yes you can; mad scientist.