用Java或.NET包装C++ API

Ste*_*e M 4 .net c++ java interop

有没有人用Java或.NET成功"包装"了C++ API?我有一个应用程序,它提供了一个用于编写插件的C++ API.我想做的是从.NET或Java访问该API.

我需要使用COM,还是有更简单/更好的选择?

osc*_*kuo 9

如果你有一个非常直接的方法签名(即获取和返回原始类型的方法,如int,char [],void*...等),在.NET中这样做相当容易,但仍然可能但有点使用JNI在Java中更难.

但是,如果您的类方法使用现代C++编程技术,例如boost共享指针和STL容器,那么它就是一个非常不同的故事.在这种情况下,您需要非常小心内存管理.

编辑:如果该方法具有C++模板参数,那将会更有趣,因为C++模板系统与C#或Java泛型非常不同,因为它只是一个编译时机制.基本上这意味着每次将不同的数据类型传递给模板参数时,方法或类的签名都是不同的.这使得该方法无法用C#或Java包装.