从C++,反向P /调用,混合模式DLL和C++/CLI调用C#

ng5*_*000 16 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. COM完全避免使用这种方法吗?
  5. 在什么时候创建和运行CLR,由谁?

提前致谢

Aam*_*mir 22

以下是我所知的答案:

  1. 是的,它是一个混合模式DLL(事实上,你可以管理你的本机C++项目的一个文件,并在该文件中创建这个C++/CLI类,并直接从该文件调用代码.你甚至不需要单独的DLL来完成这个.
  2. C++/CLI和托管C++都代表相同的东西.唯一的区别是在旧版本中直到Visual Studio 2003,它被称为托管C++.后来,语法发生了很大变化,并重命名为C++/CLI.有关详细信息,请查看此链接.
  3. 只要调用托管DLL,就会使用CLR.

  • 不是真的... C++/CLI是一种不同的语言,打开CLR的C++是不同的.如果要在Visual C++项目中启用CLR时执行此操作,则可以执行此操作,但编译时可能会出现问题.它将取决于该特定库的实现. (2认同)