问题描述
Test32Dll.dll里面有一个add的方法,但每次测试时就报这个错:Exceptioninthread"main"java.lang.UnsatisfiedLinkError:%1不是有效的Win32应用程序。atcom.sun.jna.Native.open(NativeMethod)atcom.sun.jna.Native.open(Native.java:1759)atcom.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260)atcom.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)atcom.sun.jna.Library$Handler.<init>(Library.java:147)atcom.sun.jna.Native.loadLibrary(Native.java:412)atcom.sun.jna.Native.loadLibrary(Native.java:391)atFuck$FuckTry.<clinit>(Fuck.java:9)atFuck.main(Fuck.java:14)
解决方案
解决方案二:
试过在WINXP32系统上测试可以,要抓狂了
解决方案三:
楼主的win8是64位系统,jdk是32位还是64位呢?dll是多少位的呢
解决方案四:
引用2楼magi1201的回复:
楼主的win8是64位系统,jdk是32位还是64位呢?dll是多少位的呢
WIN8是64位的,JDK1.6也是64位的,DLL不知道,二楼那个测试OK的,我是在WINXP32位系统上运行OK的,DLL文件是相同的,终于有人回复了,好开心呀
解决方案五:
引用3楼wood07的回复:
WIN8是64位的,JDK1.6也是64位的,DLL不知道,二楼那个测试OK的,我是在WINXP32位系统上运行OK的,DLL文件是相同的,终于有人回复了,好开心呀
对dll不懂。估计你的dll是32位的,之前帮朋友写过一个调用dll的代码,dll文件是32位的,然后在64位系统上调用,怎么也调用不起来后来改32位系统就好了,可能dll对系统位要求比较高吧,二楼时候给楼主了个链接,希望可以帮到楼主
解决方案六:
引用4楼magi1201的回复:
Quote: 引用3楼wood07的回复:
WIN8是64位的,JDK1.6也是64位的,DLL不知道,二楼那个测试OK的,我是在WINXP32位系统上运行OK的,DLL文件是相同的,终于有人回复了,好开心呀对dll不懂。估计你的dll是32位的,之前帮朋友写过一个调用dll的代码,dll文件是32位的,然后在64位系统上调用,怎么也调用不起来后来改32位系统就好了,可能dll对系统位要求比较高吧,二楼时候给楼主了个链接,希望可以帮到楼主
我这边测试了,装X86的JDK1.7,在DOS环境下可以用,但搭配eclipse直接开不了,查了一下说是JDK版本错误,然后找人帮我出了一个64位的DLL.但还是会报一楼那个错,不是有效的WIN32程序
解决方案七:
引用4楼magi1201的回复:
Quote: 引用3楼wood07的回复:
WIN8是64位的,JDK1.6也是64位的,DLL不知道,二楼那个测试OK的,我是在WINXP32位系统上运行OK的,DLL文件是相同的,终于有人回复了,好开心呀对dll不懂。估计你的dll是32位的,之前帮朋友写过一个调用dll的代码,dll文件是32位的,然后在64位系统上调用,怎么也调用不起来后来改32位系统就好了,可能dll对系统位要求比较高吧,二楼时候给楼主了个链接,希望可以帮到楼主
现在试成功了,JDK1.7_X86,JNA,Eclipse_32,
解决方案八:
引用6楼wood07的回复:
Quote: 引用4楼magi1201的回复:
Quote: 引用3楼wood07的回复:
WIN8是64位的,JDK1.6也是64位的,DLL不知道,二楼那个测试OK的,我是在WINXP32位系统上运行OK的,DLL文件是相同的,终于有人回复了,好开心呀对dll不懂。估计你的dll是32位的,之前帮朋友写过一个调用dll的代码,dll文件是32位的,然后在64位系统上调用,怎么也调用不起来后来改32位系统就好了,可能dll对系统位要求比较高吧,二楼时候给楼主了个链接,希望可以帮到楼主
现在试成功了,JDK1.7_X86,JNA,Eclipse_32,
我遇到了跟你一样的问题。我的环境是Win7_x64+JDK_x86+Eclipse_x86,我的dll文件是通过Matlab的mcc工具将*.m文件转制过来的,然后通过JNA调用的时候也是报"%1不是有效的win32应用程序"。Matlab也是32位的。但是用VS编写的dll就不存在这个问题,可以直接调用。怎么破啊...
解决方案九:
还是推荐都用32bits的吧,足够了。
解决方案十:
该回复于2014-09-22 08:47:54被版主删除