Dll用JNA调用另一个dll

时间:2014-06-24 21:34:56

标签: java dll java-native-interface jna

让我试着解释一下我的问题..

我有以下目录结构:

  • 主要目录
    • SRC

今天dll位于文件夹" bin"并且工作正常,但由于要求,我需要改为"分机"文件夹中。

在应用程序的启动时,我在运行时设置了jna.library.path和java.library.path:

// JNA
    System.setProperty("jna.library.path", myLibraryPath); 

// JAVA
final Field usrPathsField = ClassLoader.class.getDeclaredField("usr_paths");
usrPathsField.setAccessible(true);

final String[] paths = (String[])usrPathsField.get(null);

for(String path : paths) {
    if(path.equals(libraryPath)) {
        return;
    }
}

final String[] newPaths = Arrays.copyOf(paths, paths.length + 1);
newPaths[newPaths.length-1] = libraryPath;
usrPathsField.set(null, newPaths);

上面的代码在初始化后设置java.library.path。

我也试过在线命令上运行它:

-Djna.library.path=path_to_ext -Djava.library.path=path_to_ext

所以,在我的测试中,当我从dll调用一个方法时,我发现问题就出现了,而这个方法调用了另一个dll的其他方法。

有人能帮助我吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

我解决了设置环境变量HKEY_CURRENT_USER / Environment / Path to myLibraryPath的问题。