0

我正在第一次尝试使用libpdjava。我使用的 IDE 是 NetBeans。对于 libpd,我将这些二进制构建用于 Java。运行代码时,我得到一个 java.lang.UnsatisfiedLinkError。在某些地方它说:

找不到依赖库

我已经看到为 Android 回答了类似的问题,但不是为 Java 回答的。

编辑:这是完整的错误消息:

线程“主”java.lang.UnsatisfiedLinkError 中的异常:C:\Users\jaiserpe\AppData\Local\Temp\pdnative7141399841793639340.dll:在 java.lang.ClassLoader$NativeLibrary.load(Native Method) 处找不到依赖库java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938) 在 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1821) 在 java.lang.Runtime.load0(Runtime.java:809) 在 java.lang.System .load(System.java:1086) 在 org.puredata.core.NativeLoader.loadLibraryFromJar(NativeLoader.java:121) 在 org.puredata.core.NativeLoader.loadLibrary(NativeLoader.java:97) 在 org.puredata.core。 PdBase.(PdBase.java:59) 在 holamundo.HolaMundo.main(HolaMundo.java:26) C:\Users\jaiserpe\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java返回:1 BUILD FAILED(总时间:0 秒)

4

2 回答 2

1

您似乎缺少libpd.

您可以使用DepndencyWalker检查缺少的内容。

如果您认为所有必需的库都在那里,请确保它们对 JVM 可见以进行加载。有关在 Windows 上加载 DLL 的更多信息,请点击此处

于 2016-02-04T13:28:15.677 回答
1

这些 DLL 是用 MinGW 构建的。使用此处的技术http://comments.gmane.org/gmane.comp.gnu.mingw.user/38834这些构建所需的 DLL 是:

$ x86_64-w64-mingw32-objdump --all-headers java-build/org/puredata/core/natives/windows/x86_64/pthreadGC2.dll | grep 'DLL Name'
    DLL Name: KERNEL32.dll
    DLL Name: msvcrt.dll
    DLL Name: WS2_32.dll
$ x86_64-w64-mingw32-objdump --all-headers java-build/org/puredata/core/natives/windows/x86_64/pdnative.dll | grep 'DLL Name'
    DLL Name: ADVAPI32.dll
    DLL Name: KERNEL32.dll
    DLL Name: msvcrt.dll
    DLL Name: msvcrt.dll
    DLL Name: pthreadGC2.dll
    DLL Name: WS2_32.dll
$ x86_64-w64-mingw32-objdump --all-headers java-build/org/puredata/core/natives/windows/x86/pdnative.dll | grep 'DLL Name'
    DLL Name: ADVAPI32.dll
    DLL Name: KERNEL32.dll
    DLL Name: msvcrt.dll
    DLL Name: msvcrt.dll
    DLL Name: pthreadGC2.dll
    DLL Name: WS2_32.dll
$ x86_64-w64-mingw32-objdump --all-headers java-build/org/puredata/core/natives/windows/x86/pthreadGC2.dll | grep 'DLL Name'
    DLL Name: KERNEL32.dll
    DLL Name: msvcrt.dll
    DLL Name: WS2_32.dll

如果在系统上不再找到所有这些依赖项,或者只是过时了,那么重新编译 DLL 可能对您有用。

祝你好运。

于 2016-02-06T20:09:43.490 回答