0

Windows でSystem.loadLibraryを介して Java にロードしたい拡張子pydを持つPython C 拡張 DLLがあります。*.dll 以外の拡張子の dll をロードする方法はないようです。

この問題を克服するための提案されたアプローチはありますか?

使用事例

JavaにPythonを埋め込む予定です。Java にロードしていた拡張 dll を作成しました。JNI を使用して拡張 dll と通信し、次に Python ランタイム環境と対話して Python ステートメントを実行します。

_____                     _____          _____
| J | System.loadLibrary  |   |          | P |
| A |-------------------->| P |          | Y |
| V |                     | Y |<-------->| T |
| A |       JNI           | D |          | H |
|___|<------------------->|___|          | O |
                                         | N |
                                         |___|
4

3 に答える 3

4

代わりにSystem.load()を使用してみ ましたか? 任意のファイル名を指定できますが、欠点は、.pyd ファイルへの完全なパスが必要なことです。


.dll がロードされるパスを検索するのは難しくありません。

for (String s: System.getProperty("java.library.path").split(";")) {
    String pydName = s + "/mypythonlib.pyd";
    File pydFile = new File(pydName);
    if (pydFile.exists()) {
        System.load(pydName);
        break;
    }
}
于 2013-04-29T18:14:17.773 に答える