Can';t在64位java程序中加载64位DLL
==已编辑== 我猜这和自由党有关。我正在使用,如果调用Queue.sendBytes()会发生错误,但如果调用Queue.send(Message),则不会发生错误。谢谢你所做的一切 ==编辑== 我有一个64位的DLL编译(我已经用dumpbin检查过了) 我正在尝试运行一个Java程序来利用这个库,但没有成功Can';t在64位java程序中加载64位DLL,java,dll,64-bit,java-native-interface,32-bit,Java,Dll,64 Bit,Java Native Interface,32 Bit,==已编辑== 我猜这和自由党有关。我正在使用,如果调用Queue.sendBytes()会发生错误,但如果调用Queue.send(Message),则不会发生错误。谢谢你所做的一切 ==编辑== 我有一个64位的DLL编译(我已经用dumpbin检查过了) 我正在尝试运行一个Java程序来利用这个库,但没有成功System.getProperty(“sun.arch.data.model”)dumps 64。我已经成功地将该库与其他Java程序一起使用,所以我知道这不是源于它。这一定是我编译
System.getProperty(“sun.arch.data.model”)
dumps 64。我已经成功地将该库与其他Java程序一起使用,所以我知道这不是源于它。这一定是我编译或实例化JVM的方式。有人知道会发生什么吗?错误如下:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006da48ad7, pid=3208, tid=4868
#
# JRE version: 6.0_24-b07
# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.1-b02 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V [jvm.dll+0x258ad7]
#
# An error report file with more information is saved as:
# hs_err_pid3208.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
我注意到,出于某种原因,我真的不知道这是否正常,JVM正在尝试加载一堆windows 32位库:
Dynamic libraries:
0x0000000000400000 - 0x000000000042e000 C:\Windows\system32\java.exe
0x0000000077420000 - 0x00000000775c9000 C:\Windows\SYSTEM32\ntdll.dll
0x0000000077200000 - 0x000000007731f000 C:\Windows\system32\kernel32.dll
0x000007fefd4e0000 - 0x000007fefd54c000 C:\Windows\system32\KERNELBASE.dll
0x000007fefe7e0000 - 0x000007fefe8bb000 C:\Windows\system32\ADVAPI32.dll
0x000007feff090000 - 0x000007feff12f000 C:\Windows\system32\msvcrt.dll
0x000007feff710000 - 0x000007feff72f000 C:\Windows\SYSTEM32\sechost.dll
0x000007feff130000 - 0x000007feff25d000 C:\Windows\system32\RPCRT4.dll
0x000000006d7f0000 - 0x000000006def4000 C:\Program Files\Java\jre6\bin\server\jvm.dll
0x0000000077320000 - 0x000000007741a000 C:\Windows\system32\USER32.dll
0x000007fefd950000 - 0x000007fefd9b7000 C:\Windows\system32\GDI32.dll
错误异常\u访问\u冲突(0xc0000005)是由DLL中的代码错误引起的。获取访问冲突意味着正在加载DLL。Queue.send()工作和Queue.sendBytes()失败的症状进一步说明DLL中存在错误。错误异常访问冲突(0xc0000005)是由DLL中的代码错误引起的。获取访问冲突意味着正在加载DLL。Queue.send()工作且Queue.sendBytes()失败的症状进一步说明DLL中存在错误。我看到您正在使用AMD。您是否尝试使用Intel 64位?在64位系统上,
system32
中的所有文件都是64位的。32位文件位于SysWOW64中,因此DLL不会尝试加载32位库。责怪MS保留命名(包括32个文件夹名和文件名),即使文件是64位的…谢谢。我不能用别的电脑试试,因为我这里没有别的电脑。最奇怪的是,我有另一个应用程序,加载刚刚好,但这一个不。。。我真的很紧张…我会尝试Java 6 update 30来检查是否不是一个已修复的错误。我看到您正在使用AMD。您是否尝试使用Intel 64位?在64位系统上,system32
中的所有文件都是64位的。32位文件位于SysWOW64中,因此DLL不会尝试加载32位库。责怪MS保留命名(包括32个文件夹名和文件名),即使文件是64位的…谢谢。我不能用别的电脑试试,因为我这里没有别的电脑。最奇怪的是,我有另一个应用程序,加载刚刚好,但这一个不。。。我真的很紧张…我会尝试Java6Update30来检查它是否不是一个已经修复的bug。