简体   繁体   中英

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

有没有办法在没有COM使用的情况下从c ++非托管应用程序调用c#dll?

您可以使用Reverse P/Invoke执行此操作 - 此处的示例和讨论。

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/

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. (eg 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.

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++

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM