首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Eclipse从Python或Java调用C++库

使用Eclipse从Python或Java调用C++库
EN

Stack Overflow用户
提问于 2013-03-19 15:26:20
回答 2查看 1.7K关注 0票数 1

我正在尝试使用Eclipse在Python或Java中调用一个用C++编写的名为VFML (http://www.cs.washington.edu/dm/vfml/)的库。我是Python的新手,也没有用C语言编程。有没有什么方法可以做到这一点,而不需要C++编程的知识,因为这将需要时间来学习语言。任何关于如何做到这一点的教程或指南也会有所帮助。

我使用Eclipse来运行Python模块和Java类。如果有人知道是否可以使用Java或C++调用Eclipse中的Python库,那就太好了。谢谢。

编辑1:

谢谢你所有的答案。我搞错了VFML是用C++写的。正如所指出的,它是C语言。似乎给出的大多数答案都表明您对C语言有一定的了解,以便在Python甚至Java中调用这些库。我听说过SWIG。任何想法,如果这将是可行的,因为没有任何C语言的知识,我甚至不知道我是否可以让库正常工作。另一个问题是,当我在Eclipse中使用Python和Java时,是否有任何用于SWIG的Eclipse插件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-19 17:06:33

您不能在Python语言或Java语言中直接调用C++;您必须编写一些桥接代码。考虑到Python和Java的外部接口是C语言,这种桥接代码可能或多或少比较复杂:字符串是char*,所有的内存管理问题都暗示了这一点,而且报告错误通常需要调用接口级别来在目标语言中创建异常。

除了这些问题之外,Python的接口代码相当简单,但它仍然需要相当好的C++知识才能在Python对象上有效地使用RAII。Java接口(JNI)异常复杂,需要大量的Java回调才能执行最简单的操作,以及所有常见的资源管理。

票数 0
EN

Stack Overflow用户

发布于 2013-03-19 15:32:20

要使用c++调用Java方法,可以使用Java Native Access库。它真的很容易使用。你所需要做的就是创建接口,然后你就可以使用它了。

例如,假设你用GetSystemIp(out char[] ip)获得了dll,这个方法的接口将如下所示:

代码语言:javascript
复制
import com.sun.jna.Library;
import com.sun.jna.Native;

public interface DllLibrary extends Library {
    DllLibrary INSTANCE = (DllLibrary)
        Native.loadLibrary(dllPath, DllLibrary.class);
    int GetSystemIp(String ip);

}

您可以这样使用它:

代码语言:javascript
复制
String ip;
int rc = DllLibrary.INSTANCE.GetSystemIp(String ip);

更多信息可以在jna sitewiki page上找到。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15493707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档