代码之家  ›  专栏  ›  技术社区  ›  Dims

如何从JAR文件的“lib”子目录加载DLL?

  •  0
  • Dims  · 技术社区  · 7 年前

    lib DLL文件上方的子目录:

    enter image description here

    System.loadLibrary('JCudaRuntime-0.9.2-windows-x86_64');
    

    原因

    java.lang.UnsatisfiedLinkError: no JCudaRuntime-0.9.2-windows-x86_64 in java.library.path
    

    怎么解决这个问题?

    是否可以为指定子目录 loadLibrary ? 本地库应该更好地位于哪里?就在JAR文件的根目录下?

    我能教格雷德在 在罐子里?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Martin Zeitler    7 年前

    libs 普通目录用于 jar aar 图书馆。

    x86_64 程序集将转到 src/main/jniLibs/x86_64

    static {
        try {
            System.loadLibrary("JCudaDriver-0.9.2-windows-x86_64");
            System.loadLibrary("JCudaRuntime-0.9.2-windows-x86_64");
        } catch (UnsatisfiedLinkError e) {
            Log.e(LOG_TAG, e.getMessage());
        }
    }
    

    还可以/可以更改路径:

    sourceSets {
        main {
            jniLibs.srcDir "src/main/jniLibs"
            jni.srcDirs = "src/main/cpp"
        }
    }
    

    x86_64 .dll .jar 把它们放到一个项目的 jniLibs 目录可能是最简单的,因为当它们在 用一个 lib 目录,它们可能在预期的位置找不到;这不必要地使事情复杂化。