JNA 调用dll %1 不是有效的win32应用程序。

时间:2022-09-05 03:32:40
环境如下:
win7 64位
jdk 32 位

然后用32位的Matlab中的MCC工具将*.m文件转换为C的dll文件。
在java中开发调用时,报错:Exception in thread "main" java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序。
求大神帮忙!谢了~

10 个解决方案

#1


不知道你是不是在用最原始的JNI调用dll,UnsatisfiedLinkError的话,先看下自己的native方法定义是否正确,确保有对应的本地方法;没错的话把dll换成64bit的试试。话说你64bit的系统干嘛装32的jdk。

#2


引用 1 楼 xingkonglv 的回复:
不知道你是不是在用最原始的JNI调用dll,UnsatisfiedLinkError的话,先看下自己的native方法定义是否正确,确保有对应的本地方法;没错的话把dll换成64bit的试试。话说你64bit的系统干嘛装32的jdk。


先谢谢你的回答。
我用的是JNA,方法是能保证有的。
但是因为是给外面做工程,然后那边要求是32位的环境,我就把jdk什么都换成了32位的,但是懒得重装系统就还用的是64的系统。但是感觉应该没影响啊,我直接用VS编的dll文件就能成功调用,用Matlab的mcc工具转制过来的dll就有这问题。

#3


没有大神了么?!求救啊....项目告急啊...

#4


该回复于2014-09-17 16:58:45被版主删除

#5


我也遇到这个问题,怎么解决啦。。。谢谢

#6


遇到一样的问题了,没有人解决这个吗?

#7


我也是遇到同样的问题了,我用的是jdk7 64位版本,jna4.
dll文件是用code::blocks生成的.
错误信息如下:

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序。

#8


http://www.th7.cn/Program/java/201607/907202.shtml
dll可能是x86打的包,你调用时用的64位的JDK,用32位的JDK调用试试。

#9


Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\MyWork\hsdqtransportsdkDemo\HSDQTransportDll.dll: %1 不是有效的 Win32 应用程序。
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.hs.transportsdk.main.TestDemo.<clinit>(TestDemo.java:9)


同样问题,请问楼主怎么解决的

#10


JDK是32的,系统是64的

#1


不知道你是不是在用最原始的JNI调用dll,UnsatisfiedLinkError的话,先看下自己的native方法定义是否正确,确保有对应的本地方法;没错的话把dll换成64bit的试试。话说你64bit的系统干嘛装32的jdk。

#2


引用 1 楼 xingkonglv 的回复:
不知道你是不是在用最原始的JNI调用dll,UnsatisfiedLinkError的话,先看下自己的native方法定义是否正确,确保有对应的本地方法;没错的话把dll换成64bit的试试。话说你64bit的系统干嘛装32的jdk。


先谢谢你的回答。
我用的是JNA,方法是能保证有的。
但是因为是给外面做工程,然后那边要求是32位的环境,我就把jdk什么都换成了32位的,但是懒得重装系统就还用的是64的系统。但是感觉应该没影响啊,我直接用VS编的dll文件就能成功调用,用Matlab的mcc工具转制过来的dll就有这问题。

#3


没有大神了么?!求救啊....项目告急啊...

#4


该回复于2014-09-17 16:58:45被版主删除

#5


我也遇到这个问题,怎么解决啦。。。谢谢

#6


遇到一样的问题了,没有人解决这个吗?

#7


我也是遇到同样的问题了,我用的是jdk7 64位版本,jna4.
dll文件是用code::blocks生成的.
错误信息如下:

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序。

#8


http://www.th7.cn/Program/java/201607/907202.shtml
dll可能是x86打的包,你调用时用的64位的JDK,用32位的JDK调用试试。

#9


Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\MyWork\hsdqtransportsdkDemo\HSDQTransportDll.dll: %1 不是有效的 Win32 应用程序。
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.hs.transportsdk.main.TestDemo.<clinit>(TestDemo.java:9)


同样问题,请问楼主怎么解决的

#10


JDK是32的,系统是64的