.net - 如何使用非托管代码中的托管代码?

标签 .net c++-cli unmanaged

如何从 native C++(非托管代码)调用 .NET 代码?我想将 .NET 代码公开给我的非托管 (C++) 应用程序,然后使用它们。更具体地说,我想从 native C++ 调用 C# :)。我知道有很多方法,但你能告诉我每种方法的优缺点吗?顺便说一句,我不想​​使用 COM 那么现在有什么选择?

是否可以将 C# 代码包装在 C++/CLI 中,然后从 C++ 中调用它?如果是这样,我该怎么做?如何将 C# 包装在 C++/CLI 中,然后从 C++ 调用它?

最佳答案

我最近才写过它。它是关于 Delphi 的,但这并不意味着它也不能与 C++ 一起使用。

.NET component in DELPHI 2009

即使对 C++ 了解不多,我仍然知道 IUnknown 和 COM 兼容的接口(interface)引用应该可以从 C++ 中很好地使用(如果您需要传递对象,而不仅仅是结构)。

  • 您可以使用 Microsoft 的 C++/CLI 来引用您的 C# 代码并将其导出为普通的 DLL 函数。
  • 您也可以下载 MSBuild task我写道,它允许您直接从 C# 导出函数。类似于如何使用 DllImportAttribute。

  • 此 C# 代码将导出一个函数“YourExportName”,该函数可以像使用任何 c 兼容函数一样使用。
    class Sample
    {
       [DllExport("YourExportName")]
       static int TestFunction(int left, int right)
       {
         return left + right;
       }
    }
    

    关于.net - 如何使用非托管代码中的托管代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635679/

    相关文章:

    java - 如何保护从 java 表单应用程序登录 SQL Server 的密码

    .net - Powershell io.streamreader "-context"等效命令

    c# - 在启动期间自动在引用的程序集上运行代码??这个叫什么?

    .net - 来自非托管代码的 System.AccessViolationException?

    C++/CLI - 垃圾收集的效率如何?它真的适合我吗?

    c# - 如何将对象数组传递给非托管代码?

    .net - 如何使用 .NET 检索在数码相机上拍摄的照片的属性?

    面向.NET Core 3.1的C++/CLI

    c# - 从 C# 获取非托管 C++ 函数

    .net - CLR 托管。如何枚举 .net 4 中的 _AppDomains