【发布时间】:2011-08-12 14:35:06
【问题描述】:
我正在尝试在我的 jTabbedPane 项目中包含一个名为 Avogadro (1) 的计算化学/物理可视化工具。我使用 QT Jambi (1) 在 Eclipse 中从 Avogadro 的 UI 创建了一个 JUI (Java GUI)。我在那次尝试中成功了,但是 GUI 在运行时(显然没有功能)。
简而言之,这里的复杂性是我试图访问一个只能使用 CMake 编译的大型项目的 C++ 库(导入 Eclipse 不成功)。更糟糕的是,我认为我需要与之交互的只是一个 .cpp 文件,该文件规范 GUI 并将其链接到项目的其余部分,从而提供功能。我计划使用 SWIG 与上述 cpp 文件中的函数进行交互,并且我计划使该接口与 C++ 库一起工作,以向 Java GUI 添加功能。
对我如何做到这一点有任何想法吗?我需要 SWIG 整个项目吗?
【问题讨论】:
-
将所有算法库编译为静态库,然后再次用 C++ 编写 JNI 胶水(包括共享库),这将是您的“调节 GUI 的.cpp 文件”。稍微调试一下,找出丢失的符号和 UnsatisfiedLinkErrors,你就会拥有 Java - C++ 接口
-
我可以用什么来制作 JNI 胶水?痛饮?
-
有一些工具,但我建议从头开始编写。查看有关 JNI 示例等的一些教程,最终,您将在 JNI_OnLoad 函数中注册相关函数。它真的很简单(不需要 SWIG)