在 Java 中使用 C++ 模板框架

Using C++ template framework in Java

我目前正在进行一个学校项目,我们用 C++ 制作了一个 FuzzyLogicFramework。 现在,我尝试在 Java 中使用这个框架,以便使用该框架做一个 android 应用程序,我在 c++ 项目中有一个名为 FuzzyFactory 的工厂。 它的方法原型是这样的: Expression<T>* newAnd(Expression<T>*, Expression<T>*);

我不一定要使用所有可用的类型,这就是我创建 class 的原因:

template<> class FuzzyFactory<float>;

我用这个 class 生成了一个 DLL 库。

我的问题如下: 我想在 Java 文件中使用这个库:我可以使用什么技术? 我听说过 JNI 并且能够使用它 运行 基本功能,但是我能够管理对象实例化吗?我如何才能在 Java 中的函数参数中给出指针?我能够使用 JNI 在 Java 中 运行 我的 c++ 项目 main,但似乎在另一个级别上使用 Factory class。

我还听说了 wrappersJNA

我只是需要有人告诉我一个技术可以使用,这是我第一次尝试做跨语言实现所以我有点不知所措。

如果您想更多地了解项目的当前状态:https://gitlab.com/MelvinC/languageframeworkproject-ensisa-2020

我的 Java 项目和 c++ 项目应该在同一个 git 存储库中吗?

抱歉我的英语不够好。

提前感谢您阅读和帮助我。

SWIG 对 C++ 模板有一些支持,并且可以从 C++ headers 生成 Java 绑定代码。这将为您提供一个非常 low-level,但希望可用的界面。

或者,您可能想要考虑逻辑程序的某种外部表示。然后,您可以使用纯 Java 代码来构造程序,然后将其序列化为外部表示并将其传递给 C++ 端。 为了获得灵感,Z3 SMT 求解器接受称为 SMT-LIB 的表示。 或者,您可以使用 S-expressions、XML 甚至只是嵌套 JSON.

创建自己的格式