There are several ways for a C++ application to invoke functions in a C# DLL.
- Using C++/CLI as an intermediate DLL
- http://blogs.microsoft.co.il/sasha/2008/02/16/net-to-c-bridge/
- Reverse P/Invoke
- http://tigerang.blogspot.ca/2008/09/reverse-pinvoke.html
- http://blogs.msdn.com/b/junfeng/archive/2008/01/28/reverse-p-invoke-and-exception.aspx
- Using COM
- http://msdn.microsoft.com/en-us/library/zsfww439.aspx
- Using CLR Hosting (
ICLRRuntimeHost::ExecuteInDefaultAppDomain()
)- http://msdn.microsoft.com/en-us/library/dd380850%28v=vs.110%29.aspx
- http://msdn.microsoft.com/en-us/library/ms164411%28v=vs.110%29.aspx
- https://stackoverflow.com/a/4283104/184528
- Interprocess communication (IPC)
- How to remote invoke another process method from C# application
- http://www.codeproject.com/Tips/420582/Inter-Process-Communication-between-Csharp-and-Cpl
- Edit: Host a HTTP server and invoke via HTTP verbs (e.g. a REST style API)