【问题标题】:Connecting C++ to C#将 C++ 连接到 C#
【发布时间】:2010-06-12 23:04:05
【问题描述】:

我一直在用 C++ 编写程序,并注意到在 C# 中有一个库,其他人编写了我想链接到我的代码的库....但我不知道该怎么做。有人可以提出一些建议吗?怀疑这很重要,但我使用的是带有 MSVC2010 的 Windows 7。

提前致谢!

【问题讨论】:

  • 图书馆是做什么的?也许有一个 C++ 库。
  • 它是一个语音识别库,但我也想知道这个问题的答案,无论是否有另一个库。

标签: c# c++


【解决方案1】:

您可以尝试在 C++/CLI 模式下编译您的 C++ 程序。然后编译器将生成一个 .NET 可执行文件,它可以创建 C# 对象并使用它们的方法。

此处讨论 C++/CLI:C++/CLI

【讨论】:

  • +1。请注意,如果您这样做,则必须将程序集标记为不安全,因为将代码标记为安全要求没有非托管代码。
  • 听起来这需要重构 C# 代码?是这样吗?另外,我可以用 C++/CLI 编译 Qt 等其他程序吗?
  • 您不需要在 C# 端进行任何更改,因为您可以在 C++/CLI 中创建和使用 .NET 对象,例如:DotNetClass^ aClass = gcnew DotNetClass(); aClass->SomeMethod(); 您可能无法转换库,例如QT 转换为 C++/CLI。但是,您可以将项目中的单个文件设置为在 C++/CLI 模式下编译,而将其他文件保留为普通 C++。 Visual Studio 将为您管理转换。这意味着您可以围绕 .NET 库创建 C++/CLI 包装器,并将项目的其余部分保留在常规 C++ 中。
【解决方案2】:

如果您熟悉 COM,您可以access the .NET library through COM。如果库不提供开箱即用的 COM 互操作,您可以使用 C# 围绕它编写一个包装器并通过 COM 公开它。

如果您要引入 .NET 库,您应该知道它需要一个 .NET 运行时,这可能会占用宝贵的资源。如果您出于性能原因使用 C++ 构建应用程序,那么最好将所需的库部分移植到 C++。

【讨论】:

猜你喜欢
  • 2017-11-28
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2021-12-12
相关资源
最近更新 更多