用于互操作的Visual C ++项目类型

时间:2011-10-01 19:32:03

标签: visual-studio-2010 interop

我正在尝试从C#和C ++ / CLI学习Interop。我开始创建一个C ++ / CLI项目。我发现的大多数示例都讨论了与COM互操作,但是当我在Visual Studio 2010中创建C ++ / CLI项目时,在Visual C ++项目的项目模板下,我没有看到任何类型的COM。有任何想法吗?我还可以创建一个Visual C ++类库项目来用于此目的吗?

1 个答案:

答案 0 :(得分:1)

你正在混淆它。有三种不同的方法可以与托管程序中的本机代码互操作,您不能同时使用它们:

  • 通过[DllImport]属性进行调整。适用于C风格的原生API
  • 通过COM互操作。只要它是自动化子集并且您有一个类型库,CLR就能很好地支持它。只需开箱即用,无需任何工作。将COM添加到未启用COM的现有本机代码是没有效率的,除非您已经具备良好的COM编程技能(知道ATL)
  • 使用C ++ / CLI语言创建的包装类。当上述选项不够时。与本机C ++类互操作所必需的。

学习足够的C ++ / CLI来完成工作需要大约3周时间,真正学习语言需要花费数月时间。当你只是用它来编写包装时,关注的是#pragma managed,正确使用了hat以及析构函数和终结器之间的区别。

可能值得您花时间了解它,语法非常类似于C ++ / CX的语法,这是添加到MSVC ++编译器的语言扩展,支持为Windows 8编写Metro应用程序。了解C ++ / CLI是95%了解C ++ / CX。

this answer中C ++ / CLI中的快速启动包装类示例。