Platform Invoke(P/Invoke),即平台调用,主要用于调用C库函数和Windows API
1 |
|
C++ Introp, 主要用于Managed C++(托管C++)中调用C++类库
第二部分主要向大家介绍了第一种互操作性技术,然后我们也可以使用C++ Interop技术来实现与非托管代码进行交互。
然而C++ Interop 方式有一个与平台调用不一样的地方,就是C++ Interop 允许托管代码和非托管代码存在于一个程序集中,甚至同一个文件中。
C++ Interop 是在源代码上直接链接和编译非托管代码来实现与非托管代码进行互操作的,而平台调用是加载编译后生成的非托管DLL并查找函数的入口地址来实现与非托管函数进行互操作的。
C++ Interop使用托管C++来包装非托管C++代码,然后编译生成程序集,然后再托管代码中引用该程序集,从而来实现与非托管代码的互操作
。
COM Interop, 主要用于在.NET中调用COM组件和在COM中使用.NET程序集。
在.NET中使用COM对象,主要有3种方法:
- 使用TlbImp工具为COM组件创建一个互操作程序集来绑定早期的COM对象,这样就可以在程序中添加互操作程序集来调用COM对象
- 通过反射来后期绑定COM对象
- 通过P/Invoke创建COM对象或使用C++ Interop为COM对象编写包装类
1 |
|
https://www.cnblogs.com/zhili/archive/2013/01/14/NetInterop.html