【问题标题】:Mixing c# and vc++混合 c# 和 vc++
【发布时间】:2009-09-22 22:26:24
【问题描述】:

我有一个 c# 的代码 sn-p,我一直在尝试将其翻译成 vc++,但我遇到了一些困难。所以,我想知道混合 c# 和 vc++ 是否可能或可取;也就是说,我可以从 vc++ 调用我的 c# 函数,反之亦然。如果是这样,它有技巧吗?如果,不是,为什么?

【问题讨论】:

  • 为什么不发布您遇到问题的代码 sn-p?
  • 我打算进一步破解它,并可能将它作为一个不同的问题发布。这个问题既是关于我目前的问题,也是关于将两者混合的想法。

标签: c# visual-studio-2008 visual-c++


【解决方案1】:

从 C# 调用 C++ 代码非常简单,您应该能够找到大量有关 Pinvoke 和其他类型互操作的文章。

对于从 C++ 调用您的 C# 代码 - 如果您的 C++ 应用程序是托管的,那么您应该能够直接从您的 C++ 应用程序引用 C# 程序集并正常使用它。

如果 ypu C++ 代码不受管理,那么您将需要使用某种互操作来允许您的 C++ 程序集调用 C# 代码,这样做的唯一方法是 COM。

尝试其中一些链接以获取有关 COM 与 C# 互操作的更多信息:

【讨论】:

  • @Kragen - 在你的第二段中你的意思是“为了从 C++ 调用你的 C# 代码......”?但否则很好的答案!如您提供的第二个链接中所述,我在使用 .NET DLL 作为其他语言的 ActiveX COM 服务器时运气不错。
【解决方案2】:

VC++ 应用程序是否被管理?如果是这样,您可以创建一个 C# DLL,在您的 c++ 应用程序中使用它,如果您愿意,可以将它们合并到一个 EXE 中。

【讨论】:

    【解决方案3】:

    如果您想混合使用这两者,我将从 C# 作为基础项目开始,然后是 register an unmanaged (C++) DLL in your C# project。这样,您就可以在任何处理器密集型方法中将托管 C# 父应用程序的可靠性与 C++ 的速度优势结合起来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多