假设我有一个用Java编写的框架和一些执行资源密集型工作的C++代码。 - 框架根据数据库配置初始化一个处理链。处理单元(这个链)是用C++编写的。每个单元都实现了以下接口:按Java名称加载C++类
class IModule {
public:
virtual ~IModule() {};
virtual bool setConfig(ModConfig* config) = 0;
virtual map<string*,string*>* getStatus() = 0;
};
我希望开发人员能够实现该接口IModule的在C++中,使包含类的名称的数据库条目。 Java框架然后自动加载该类。 - 目标不得是在C++和Java中都编写额外的绑定代码。 正如您在界面中看到的,setConfig()方法接收一个ModConfig类型的对象。这意味着必须能够在Java中创建该C++对象的实例。
我评价以下技术: - JNA:C仅 - >需要另外绑定代码 - JNIEasy:地图对象到对象直接 - SWIG:地图对象到对象直接 - BridJ:地图对象到对象直接 - JNI:可能是问题的解决方案?
摘要: - 从Java中按名称加载C++类。 - 在Java中实例化C++对象。
我不指望有人向我提供代码。请指出我正确的方向(技术)。
在此先感谢
也许类似于[this](http://stackoverflow.com/questions/5577559/how-to-keep-a-c-object-inside-java-code-possible)问题? – 2012-03-05 09:27:19
BridJ旨在促进Java的<-> C++的互操作。但它可能无法处理模板。 SWIG允许您配置并自动生成大量的JNI代码;如果你的API是有限的,那么用普通的JNI会更好。如果您可以将您的API简化为兼容C的呼叫,那么JNA或BridJ肯定会完成这项工作。 – technomage 2012-03-13 19:00:04