Dav*_*man 6 .net c++ managed-c++
我们正在考虑使用托管C++为一些遗留C++库编写.Net可调用包装器.
这一切看起来都很简单.有什么我们需要注意的吗?
我发现在C++/CLI中包装一些现有的C++库通常很容易,并且遇到了相对较少的陷阱.我记得的是:
它非常简单并且运行良好。它比 PInvoke 容易得多。
您需要注意的一件大事是,您的托管头中没有任何非托管成员,包括私有成员、方法签名等。不过,拥有指向托管类型的指针的私有成员是可以的,只需使用前向声明即可类。
另外,请注意对象的生命周期。由于许多 .NET 程序员不习惯自行清理内存,因此很容易出现内存泄漏。确保您创建的任何包装类(如果它们包含指针)都是一次性的,并确保在托管代码中处置它们。托管 C++ 中 IDisposable 的语法也很奇怪,但它在文档中。
另外,请记住,每次跨越托管/非托管边界时,您都会遭受轻微的影响,因此请尝试相应地规划您的界面。如果在循环中重复调用任何内容,最好将该循环移过边界,以便只跨越一次。不过,除非您正在通话数百万个电话,否则不要太担心这一点。
这篇文章反其道而行之,但它有一些有用的观点。
使用我们的 ManWrap 库在本机 C++ 代码中充分利用 .NET
也可以看看
Visual Studio 2005 中的托管代码以及
删除托管对象、包装库等
| 归档时间: |
|
| 查看次数: |
5425 次 |
| 最近记录: |