Call C# dll from unmanaged C++ app without COM

2019-02-10 10:25发布

Is there a way to call c# dll from c++ unmanaged application without COM usage?

4条回答
放荡不羁爱自由
2楼-- · 2019-02-10 10:43

Your only option really is to either use C++.net or create a C++.net wrapper for it that exports what you need.

Calling C# code from C++

查看更多
三岁会撩人
3楼-- · 2019-02-10 10:51

You can do this using Reverse P/Invoke - example and discussion here.

查看更多
The star\"
4楼-- · 2019-02-10 10:57

I might be a bit late, but check this out.

Using this little msbuild task, you can create a C# library that can be called as if it were a native DLL. (e.g. write plugins for apps that require them to be native dlls)

Oh and don't forget to use the project template, which will setup everything for you.

查看更多
仙女界的扛把子
5楼-- · 2019-02-10 11:01

It is actually possible to disassemble, modify the IL, and reassemble it with exported functions. I messed with this a few years ago, and created an application that would disassemble a dll, provide a list of functions that could potentially be exported - allowing the user to select them, then re-write the IL and reassemble everything. Then, I could call directly into the dll from unmanaged code...or p-invoke into the dll from managed code (not really practical, but interesting nonetheless).

Surely there is a reason that this isn't supported in the .net languages themselves (even tho it is supported in MSIL). I wouldn't use this in production:

Dead link: http://www.csharphelp.com/2007/03/exporting-managed-code-as-unmanaged/

Wayback Machine: https://web.archive.org/web/20140213030149/http://www.csharphelp.com/2007/03/exporting-managed-code-as-unmanaged/

查看更多
登录 后发表回答