Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';让JNA与第三方DLL接口的诀窍是什么?_Java_Jna - Fatal编程技术网

Java 什么';让JNA与第三方DLL接口的诀窍是什么?

Java 什么';让JNA与第三方DLL接口的诀窍是什么?,java,jna,Java,Jna,我在尝试与Magtek 32位DLL接口时遇到以下错误 Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Unable to load library 'MCPAPI': The specified module could not be found. 在同一代码中与user32.dll接口没有问题(只需调整dll名称和接口)。似乎表明无法找到DLL,但它肯定位于我的jna.library.path中。

我在尝试与Magtek 32位DLL接口时遇到以下错误

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Unable to load library 'MCPAPI': The specified module could not be found.
在同一代码中与user32.dll接口没有问题(只需调整dll名称和接口)。似乎表明无法找到DLL,但它肯定位于我的jna.library.path中。我甚至将其转储到Windows系统目录中,在user32旁边,但没有成功


这里缺少什么?

如果运行64位jvm,则无法加载32位dll。如果是这种情况,请安装32位jvm。如果运行64位jvm,则无法加载32位dll。如果是这种情况,请安装32位jvm

尝试使用System.load(path\to\library)代替System.loadLibrary()。

尝试使用System.load(path\to\library)代替System.loadLibrary()。

jna.library.path只会影响直接引用的库的加载。依赖库必须位于显式加载库所在的目录中,或者位于路径中


为了使您的示例正常工作,MCPAPI必须位于jna.library.path或path中,其依赖库必须位于同一目录或path中。

jna.library.path将只影响直接引用库的加载。依赖库必须位于显式加载库所在的目录中,或者位于路径中



为了让您的示例正常工作,MCPAPI必须位于jna.library.path或path中,并且它的依赖库必须位于同一目录或path中。

我正在使用32位JVM,并且能够成功连接System 32中的user32(我相信这是一个32位DLL?)。我正在使用32位JVM,并且能够成功地与System 32中的user32连接(我相信这是一个32位DLL?)。我正在使用com.sun.jna.Native.loadlibrary,没有可用的Native.load。尝试使用任何系统加载也会导致错误。我使用的是com.sun.jna.Native.loadlibrary,没有可用的Native.load。尝试使用任何系统加载也会导致错误。更新:如果我将jna.library.path指向C:\Windows而不是DLL的单独安装目录,则会得到“java.lang.unsatifiedLinkError:C:\Windows\MCPAPI.DLL:找不到依赖库”。无论如何,这似乎是一个进步。。。至少它正在查找库,只是不是它所依赖的任何东西…DLL是自生成的,或者您已经生成了它?很可能在生成DLL时没有添加依赖项文件…对于由第三方(不是我自己)提供的JNIIt,我也有同样的问题。有没有办法解决缺少依赖项文件的问题?也许它们存在于其他地方,我应该寻找什么呢?我不知道你可能会使用什么样的依赖项,但对我来说,我使用gcc编译了我的c代码,并使用-I标志添加所有依赖项文件(我必须输入jdk文件作为依赖项,因为我要对c函数进行JNI调用)…看看你是否能得到文件的代码,并尝试重新编译它…仍然没有运气与他们的DLL接口。看起来我必须为此设备编写自己的HID控制器。更新:如果我将jna.library.path指向C:\Windows而不是DLL的单独安装目录,则会得到“java.lang.unsatifiedLinkError:C:\Windows\MCPAPI.DLL:找不到依赖库”。无论如何,这似乎是一个进步。。。至少它正在查找库,只是不是它所依赖的任何东西…DLL是自生成的,或者您已经生成了它?很可能在生成DLL时没有添加依赖项文件…对于由第三方(不是我自己)提供的JNIIt,我也有同样的问题。有没有办法解决缺少依赖项文件的问题?也许它们存在于其他地方,我应该寻找什么呢?我不知道你可能会使用什么样的依赖项,但对我来说,我使用gcc编译了我的c代码,并使用-I标志添加所有依赖项文件(我必须输入jdk文件作为依赖项,因为我要对c函数进行JNI调用)…看看你是否能得到文件的代码,并尝试重新编译它…仍然没有运气与他们的DLL接口。看起来我必须为此设备编写自己的HID控制器。我已尝试在jna.library.path、path中指定它,甚至已将文件移动到与其他加载文件相同的目录中:-(在这方面仍然没有解决方案,但我最近没有尝试太多,因为该项目现在处于搁置状态,等待更高优先级的项目完成。depends.exe作为MCPAPI的依赖DLL的完整列表表明了什么?我从何处获得“depends.exe”?我的系统上似乎没有这个。拜托,谷歌的“depends.exe”会直接引导您找到它。)“Dependency Walker”…我倾向于忘记它不包含在任何开发环境中。我尝试在jna.library.path、path中指定它,甚至将文件移动到与其他加载文件相同的目录中:-(在这个问题上仍然没有解决方案,但我最近没有尝试太多,因为该项目现在处于搁置状态,等待更高优先级的项目完成。depends.exe作为MCPAPI的依赖DLL的完整列表表明了什么?我从何处获得“depends.exe”?我的系统上似乎没有这个。拜托,谷歌的“depends.exe”会直接引导你到”Dependency Walker“…我倾向于忘记它不包含在任何开发环境中。