Bre*_*len 8 .net c# clr c++-cli
我一直在跟上.NET CLR一段时间,而我选择的语言是C#.
直到最近,我还没有意识到C++/CLI可以生成能够运行本机和托管代码的"混合模式"可执行文件.
现在知道这一点,我的另一位开发人员朋友正在讨论这个属性,并试图确定这种能力何时以及如何有用.
我认为本机代码具有比托管代码更高效和更强大的能力,但代价是额外的开发时间.
在过去,我使用严格的本机C++代码库,并使用Interop来利用我写入本机库的功能.
我可以看到不需要额外库的好处,但我很好奇使用C++/CLI在C#中创建的soley托管可执行文件的所有优点/缺点,或使用Interop调用纯本机C++的可执行文件图书馆?
(旁注:Interop/PInvoke这两个术语是否可以互换,因为我不明白这些术语之间的区别,只是看到它们使用相同的方式.)
phi*_*red 13
使用C++/CLI,您可以广泛地创建三种类型的对象:
您可能会认为(3)就像使用PInvoke代码编写C#代码来访问本机内容 - 除了为您生成所有PInvoke内容.
当然,还有更多内容,以及一些注意事项 - 但这应该会让你知道它是如何有用的.
换句话说,它真的是一种粘合语言.虽然您可以在C++/CLI中编写完全成熟的应用程序,但将托管和本机部分分开并使用C++/CLI将这两个部分与PInvoke更加干净地连接起来更为常见.
另一个常见用途是使用.Net库调用扩展和现有的本机C++代码库.
请注意,您要对代码进行分区,因为在将纯C++代码透明地编译为IL时,它可能会非常微妙!
至于你的旁注:PInvoke是一种特殊类型的Interop.Interop也有其他形式,例如COM Interop.事实上,更准确地说,PInvoke是一组语言功能,使Interop与本机代码更容易.
| 归档时间: |
|
| 查看次数: |
1738 次 |
| 最近记录: |