You have a variety of options:
- Expose the native code using COM.
- Compile the native code into a C++/CLI mixed mode assembly. Wrap the native code in a managed ref class which can be consumed by the C# code as any other managed assembly would be.
- Compile the native code into a native DLL. Expose the functionality through exported functions. Use p/invoke to call the native functions.