如何使用 SWIG 从 C++ 调用 Java?
Posted
技术标签:
【中文标题】如何使用 SWIG 从 C++ 调用 Java?【英文标题】:How to call Java from C++ using SWIG? 【发布时间】:2010-07-06 21:59:58 【问题描述】:我可以使用 SWIG 从 Java 调用 C++ 代码,但我找不到任何有关如何执行相反操作的文档(从 C++ 调用 Java)。
官方 SWIG 文档说 (http://www.swig.org/Doc1.3/Java.html#java_overview): “SWIG 使 Java 程序能够轻松地从 Java 调用 C/C++ 代码。从历史上看,SWIG 无法生成任何代码来从 C++ 调用 Java 代码。但是,SWIG 现在支持完全跨语言多态性,并且生成的代码可以调用包装 C++ 虚拟方法时从 C++ 升级到 Java。"
但我找不到它说如何做到这一点!任何帮助是极大的赞赏。谢谢。
【问题讨论】:
【参考方案1】:实际上这是可能的,我已经基于从 C++ 到 Java 继承一个虚拟类来实现它。
您可以在 SWIG 文档的 Java 部分的“24.5 Cross language polymorphism using directors”一章中找到解决方案。
【讨论】:
【参考方案2】:根据声明中相当奇怪的措辞,我会说您想要的通常是不可能的。 “......在包装 C++ 虚拟方法时从 C++ 调用到 Java。” “...调用...”使我相信您正在调用继承接口的受保护或公共成员,并且“...包装 C++ 虚拟方法时”使我得出结论,您只能在以下情况下这样做您正在覆盖继承的接口。所以听起来实际用例非常狭窄。
但是,我只是根据您粘贴的文字的措辞来做这件事。它可能对您有帮助,也可能无济于事。
【讨论】:
以上是关于如何使用 SWIG 从 C++ 调用 Java?的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 中使用 swig 从 Java 调用 c++ 函数,得到 java.lang.UnsatisfiedLinkError
swig c++ to perl : 如何使用 c++11 字符串 STL 函数
SWIG:如何将 C++ 对象数组从 C# 传递到 C++?