使用Eclipse调用Python或java C++库

2024-09-29 19:23:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图调用一个用C++编写的用Python或java调用C++中的VFML(http://www.cs.washington.edu/dm/vfml/)的库。我是Python新手,还没有用C语言编程。有没有任何方法来做这些,不需要了解C++编程,因为学习语言需要时间。任何关于如何做到这一点的教程或指南也会有所帮助。在

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

编辑1:

谢谢你的回答。我错误地认为VFML是用C++编写的。如前所述,它是C语言。似乎大多数给出的答案都暗示了对C语言的某种理解,以便调用Python甚至Java中的库。我听说过斯威格。如果这是可行的想法,因为没有任何C语言知识,我甚至不知道我是否可以让图书馆正常工作。另一个问题是,我在Eclipse中同时使用Python和Java时,是否有针对SWIG的Eclipse插件。在


Tags: 方法语言httpwww编程dmjavacs
2条回答

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

Python的接口代码相当简单,除了 问题,但是它仍然需要相当好的C++知识。 以便在Python对象上有效地使用RAII。这个 Java接口(JNI)非常复杂,需要 无数次调用返回到Java中,即使是最简单的调用 以及所有通常的资源管理。在

要使用Java调用c++dll方法,可以使用Java本机访问库。它真的很容易使用。您需要做的就是创建接口,然后就可以使用它了。在

例如,让imagine使用GetSystemIp(out char[] ip)获得dll,此方法的接口如下所示:

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);

}

您可以这样使用它:

^{pr2}$

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

相关问题 更多 >

    热门问题