C++/CLI自动包装生成器

Ela*_*lad 11 .net interop c++-cli

在我们的项目中,我们有大量的本机C++代码,我们希望从一个用.Net编写的全新UI层重用它.

我想在这个问题上使用C++/CLI,我已经看到通过使用瘦托管类包装本机类,有一种非常直接且相当技术性的方法.我希望能够找到一个自动完成这项任务的工具,因为在我看来,如果没有很多必要的"人类"思考,我真的是一个技术问题.

有这样的工具使用显式p/invoke - 请参阅http://www.swig.org/Doc1.3/CSharp.html.问题是显式p/invoke更麻烦,性能更低.

有没有人熟悉这样的工具?

这种工具还没有固有的原因吗?

Ben*_*igt 7

p/invoke效率较低的原因是因为它必须是任何函数的非常通用的接口,只知道签名.你假设的包装器生成器没有更好的表现.

另一方面,编写自定义包装类的开发人员有更多关于一起使用的函数的信息,等等,因此可以避免很多缓慢和不必要的转换,例如通过直接在包装器中存储值而不是将它们转换为.NET友好格式.

所以这并不是说这样的工具是不可能的,它只有很少甚至没有好处.如果你关心性能,你可以编写自己的包装器,完成生命周期管理智能指针等.

当然,p/invoke只提供对裸函数的访问.这是SWiG应该有用的地方,通过裸导出函数公开任何C++类接口.

我确实在一个可能正在寻找的工具上找到了一个潜在客户,尽管它听起来非常狭窄: