You'd need to call the appropriate methods to load the native DLL into the calling process. The MemoryModule project on GitHub provides a (native) API for handling this, which you could use from a C++/CLI project.
Once you had the native.dll
loaded into the process, you could use P/Invoke to call GetProcAddress to get a handle to the "WeirdNativeFunction"
, and Marshal.GetDelegateForFunctionPointer
to convert it to a managed delegate, which you could then call.