1

Eclipse を使用して Python または Java でVFML ( http://www.cs.washington.edu/dm/vfml/ ) と呼ばれる C++ で記述されたライブラリを呼び出そうとしています。私はPythonが初めてで、C言語でプログラミングしたことはありません。言語を習得するには時間がかかるため、C++ プログラミングの知識を必要としない方法はありますか。これを行う方法に関するチュートリアルやガイドも役立ちます。

私は Eclipse を使用して、Python モジュールと Java クラスの両方を実行しています。Java または Python を使用して Eclipse で C++ ライブラリを呼び出すことができるかどうかを誰かが知っていれば、それは素晴らしいことです。ありがとうございました。

編集1:

すべての答えをありがとう。VFML が C++ で書かれていることを誤解していました。ご指摘の通りC言語でした。与えられた回答のほとんどは、Python または Java でライブラリを呼び出すために C 言語をある程度理解していることを示唆しているようです。SWIGについて聞いたことがあります。C言語の知識がなくても、ライブラリを適切に機能させることができるかどうかさえわからないので、これが機能するかどうかのアイデアはありません。別の質問は、Eclipse で Python と Java の両方を使用しているため、SWIG 用の Eclipse プラグインがあるかどうかです。

4

2 に答える 2

2

Java を使用して c++ dll メソッドを呼び出すには、Java Native Access ライブラリを使用できます。使い方はとても簡単です。インターフェイスを作成するだけで、それを使用できます。

たとえばGetSystemIp(out char[] ip)、このメソッドのインターフェイスは次のようになります。

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

}

次のように使用できます。

String ip;
int rc = DllLibrary.INSTANCE.GetSystemIp(String ip);

詳細については、jna サイトおよびwiki ページを参照してください。

于 2013-03-19T07:32:20.090 に答える
0

Python でも Java でも C++ を直接呼び出すことはできません。ブリッジコードを書く必要があります。Python および Java への外部インターフェイスが C であることを考えると、このブリッジング コードは多かれ少なかれ複雑になる可能性があります。ターゲット言語の例外。

Python のインターフェイス コードは、これらの問題を除いてかなり単純ですが、Python オブジェクトで RAII を効果的に使用するには、C++ のかなりの知識が必要です。Java (JNI) へのインターフェースは非常に複雑であり、通常のリソース管理だけでなく、最も単純な操作を実行するためにも Java への多数のコールバックが必要です。

于 2013-03-19T09:06:33.160 に答える