在 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。
我还听说了 wrappers 和 JNA
我只是需要有人告诉我一个技术可以使用,这是我第一次尝试做跨语言实现所以我有点不知所措。
如果您想更多地了解项目的当前状态: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.
创建自己的格式
我目前正在进行一个学校项目,我们用 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。
我还听说了 wrappers 和 JNA
我只是需要有人告诉我一个技术可以使用,这是我第一次尝试做跨语言实现所以我有点不知所措。
如果您想更多地了解项目的当前状态: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.
创建自己的格式