c# - 从 C++、反向 P/Invoke、混合模式 DLL 和 C++/CLI 调用 C#

标签 c# c++ clr c++-cli

据我了解,我可以使用反向 P/Invoke 从 C++ 调用 C#。反向 P/Invoke 只是以下情况:

  1. 创建托管 (c#) 类。
  2. 创建一个 c++/cli(以前托管的 c++)类库项目。使用它来调用托管 c# 类(可能通过引用)。
  3. 从原生 c++ 调用 c++/cli 代码。

问题:

  1. 这是正确的吗?
  2. 在第 2 步创建的 DLL 是否称为混合模式 DLL?
  3. 就 MS 而言,C++/CLI 是否已完全取代托管 C++?
  4. 是否完全避免使用这种方法?
  5. 将在什么时候创建和运行 CLR,由谁创建和运行?

提前致谢

最佳答案

以下是我所知的最佳答案:

  1. 是的
  2. 是的,它是一个混合模式 DLL(事实上,您可以管理您的原生 C++ 项目的一个文件,并在该文件中创建这个 C++/CLI 类,然后直接从该文件调用代码。您甚至不需要需要一个单独的 DLL 来完成此操作。
  3. C++/CLI 和托管 C++ 都代表相同的东西。唯一的区别是在 Visual Studio 2003 之前的旧版本中,它被称为托管 C++。后来,语法发生了很大变化,并被重命名为 C++/CLI。看看this link了解详情。
  4. 是的
  5. 只要调用托管 DLL,就会使用 CLR。​​

关于c# - 从 C++、反向 P/Invoke、混合模式 DLL 和 C++/CLI 调用 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068762/

相关文章:

c# - 'System.Int32' 类型的 ParameterExpression 不能用于 'System.String' 类型的委托(delegate)参数

c# - 如何从数据库中获取谷歌地图用户的位置?

c++ - 使用 Catch 框架测试 C++ 模板类

c# - 在 C++ 中触发事件并在 C# 中处理它们

c# - WinCE 6.0,支持GPRS/WiFi

C# - 获取程序集的所有 'usings'

c++ - 任何在 C++ 流上执行 printf 的库?

c++ - 我可以使用 C++ vector insted of queue 进行 FIFO 排序吗

c# - DiscardableAttribute 有什么用?

c# - 将 C# 对象(包含静态对象成员)作为参数传递给 C++/CLI 程序