据我了解,我可以使用反向 P/Invoke 从 C++ 调用 C#。反向 P/Invoke 只是以下情况:
- 创建托管 (c#) 类。
- 创建一个 c++/cli(以前托管的 c++)类库项目。使用它来调用托管 c# 类(可能通过引用)。
- 从原生 c++ 调用 c++/cli 代码。
问题:
- 这是正确的吗?
- 在第 2 步创建的 DLL 是否称为混合模式 DLL?
- 就 MS 而言,C++/CLI 是否已完全取代托管 C++?
- 是否完全避免使用这种方法?
- 将在什么时候创建和运行 CLR,由谁创建和运行?
提前致谢
最佳答案
以下是我所知的最佳答案:
- 是的
- 是的,它是一个混合模式 DLL(事实上,您可以管理您的原生 C++ 项目的一个文件,并在该文件中创建这个 C++/CLI 类,然后直接从该文件调用代码。您甚至不需要需要一个单独的 DLL 来完成此操作。
- C++/CLI 和托管 C++ 都代表相同的东西。唯一的区别是在 Visual Studio 2003 之前的旧版本中,它被称为托管 C++。后来,语法发生了很大变化,并被重命名为 C++/CLI。看看this link了解详情。
- 是的
- 只要调用托管 DLL,就会使用 CLR。
关于c# - 从 C++、反向 P/Invoke、混合模式 DLL 和 C++/CLI 调用 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068762/