29

我需要将此C# dll集成 到我的 C++ 代码中。我想从 dll 调用一些用 C# 编写的函数,其余代码用 C++ 编写。什么是最简单和最快的方法?该程序将仅在 Windows 上执行。

4

1 回答 1

31

从非托管代码调用 .NET DLL 基本上有两种情况:

  1. .NET DLL 公开了一个 COM 接口。在这种情况下,您可以在 C++ 代码中使用 COM。
  2. .NET DLL 不公开 COM 接口。在这种情况下,您有两种可能性(为了简单起见):

    2.a. 如下所述托管 CLR:将公共语言运行时加载到进程中
    2.b。编写一段托管 C++ 代码(另一个 DLL - 用 C++/CLI 编写)来包装 .NET DLL 并将“旧方式”DLL 导出暴露给非托管客户端。

我不特别了解Sharpbox系统,但它看起来像是纯.NET并且不公开COM接口,所以2.b可能是最好的方法(不是那么容易......)。也许它有一个您可以使用的 REST/Web 更简单的 API。

PS:您还可以将导出添加到 .NET DLL。此处对此进行了描述:Is is possible to export functions from a C# DLL like in VS C++? 但它有点hacky。

于 2013-10-02T21:00:23.603 回答