【问题标题】:Using C++ template framework in Java [closed]在 Java 中使用 C++ 模板框架 [关闭]
【发布时间】:2020-04-05 19:34:26
【问题描述】:

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

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

template<> class FuzzyFactory<float>;

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

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

我还听说过 wrappersJNA

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

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

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

对不起,我的英语不够好。

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

【问题讨论】:

  • C++ 指针的值在 Java 中可以表示为 long

标签: java c++ templates java-native-interface wrapper


【解决方案1】:

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

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

【讨论】:

  • @Jean-BaptistedelaBroise 如果 Botje 回答了您的问题,请接受他/她的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 2013-05-28
相关资源
最近更新 更多