将 C# 类库导入 Visual C++

Posted

技术标签:

【中文标题】将 C# 类库导入 Visual C++【英文标题】:Importing a C# class library into Visual C++ 【发布时间】:2009-02-16 06:56:14 【问题描述】:

我有一个 C# 类库,其中包含需要与外部应用程序一起使用的方法。不幸的是,这个外部应用程序只支持 C/C++ 中的外部 API。

假设我在这个 C# 库中有一个 takeIntReturnDoubleArray 方法,它接受一个整数并返回一个双精度数组。我需要做的就是有一个 C++ 方法,它接受一个整数,调用 C# 库并将一个双精度数组返回给调用应用程序。

所以本质上,C++ 库只是充当 C# 包装器和外部应用程序之间的中介。

有没有简单的方法来做到这一点?我是否必须在 C# 方面做一些特别的事情才能轻松地将其导入 C++?我看过一些关于使用#import 语句的讨论,但我真的不知道我在使用 C++ 时在做什么。

我应该在这里采取什么方法?

【问题讨论】:

【参考方案1】:

这里有两个主要选择:

    C++\CLI - 这允许您在同一个源文件中同时拥有托管和非托管代码。然后托管部分可以调用 C# 代码。 COM 互操作 - 将您的 .NET 类型公开为 COM 接口和匹配的 coclass,您可以在非托管 C++ 中轻松使用它们。

【讨论】:

我宁愿选择最简单的解决方案。我相信我可以将我的 C++ 保留为托管代码。 我最终选择了 COM。这并不令人愉快,但它完成了工作。【参考方案2】:

COM Interop 是解决此问题的一种方法。对于要公开给 C++ 应用程序的 C# 库函数,您必须有一个 COM 层。这个 (http://msdn.microsoft.com/en-us/library/aa302324.aspx#usingframeworktools_topic10) 可能很有趣。

【讨论】:

以上是关于将 C# 类库导入 Visual C++的主要内容,如果未能解决你的问题,请参考以下文章

调试由 C# Visual Studio 2010 插件导入的 C++ dll

将 C++ 枚举导入 C#

如何将托管 c++ 库导入 C# 应用程序(目标 .net 版本 3.5)

如何从 C# 导入和使用非托管 C++ 类?

C++ Visual Studio 导入 png 中的 SMFL 语法问题

Intellisense 在 C# 中使用 Visual Studio Code 进行可用的“使用/导入”