代码之家  ›  专栏  ›  技术社区  ›  Graphics Noob

从C++调用Java方法最简单的方法是什么?

  •  4
  • Graphics Noob  · 技术社区  · 15 年前

    我正在编写一个C++程序,它需要能够读取复杂和深奥的文件类型。我已经有了一个Java程序来处理这些文件,这些文件包括将它们转换成更简单的文件格式的功能。我的想法是,每当我的程序需要从一个复杂文件中读取信息时,让它调用Java方法将其转换成更简单的文件类型,然后将其写入到我的程序可以容易读取的临时文件中。文件足够小,性能可以接受。我正在用qt编写程序,并在Windows Vista计算机上运行它。

    我已经研究了使用Java本机接口,但我对它的研究越多,我就应该不惜一切代价避免它。是否有更好的方法来实现这一点,或者我应该继续使用JNI方法?

    5 回复  |  直到 15 年前
        1
  •  6
  •   Matt Price    15 年前

    你需要多久做一次?如果不是经常这样的话,你可以在那里空壳去做。只需生成命令行即可。JNI工作,但建立起来有点痛苦。一旦你把它安装好,它就可以正常工作了。

        2
  •  3
  •   Chung Pow    15 年前

    为什么不为Java算法创建一个可执行的jar?

        3
  •  2
  •   Lou Franco    15 年前

    使用 GCJ 将Java转换为LIB,以便链接到。

    这可能和JNI一样痛苦,但至少你不会再加载或依赖JRE了。

        4
  •  1
  •   Pierre    15 年前

    你可能对 SWIG . "SWIG是一种软件开发工具,它将C和C++编写的程序与各种高级编程语言连接起来。swig与不同类型的语言一起使用,包括常见的脚本语言,如perl、php、python、tcl和ruby。”

        5
  •  1
  •   Pavel Minaev    15 年前

    如果 GCJ 是一个选项,它可以让您编译Java程序到本地代码中,该代码可以与C++(再次,G++特定)程序作为一个库链接,加上包含直接的头文件。 CNI 所有Java类的映射到C++-包到命名空间、类到类、方法到成员函数等等。