I think the easiest way would be not to call directly a C++-interface DLL from C#. With this premise, two ways appear before you:
- Give your DLL a flat C interface, or a Component Object Model (COM) interface. This will make it callable from most platforms and languages.
- Keep the DLL as-is, but call it from C++/CLI code instead of C# code. It's the reason C++/CLI exists, after all: To make this kind of glue code between .Net Framework applications and unmanaged libraries.