2
==編輯==無法在64位Java程序中加載64位DLL
猜測與Lib有關。我使用MsmqJava,它看起來像我調用Queue.sendBytes()時發生錯誤,但如果我調用Queue.send(Message),它不會。謝謝你的一切。
== == EDITED
我編譯爲64位(我已經DUMPBIN檢查的話)的DLL。
我想運行一個Java程序,使用該庫沒有成功。 System.getProperty("sun.arch.data.model")
轉儲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試圖加載了一堆窗口的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
我看你使用的AMD.Did你嘗試在英特爾64位? – Cratylus
在64位系統上,'system32'中的所有文件都是64位。 32位文件位於「SysWOW64」中,因此該DLL不會嘗試加載32位庫。責備MS保持命名(包括文件夾名稱和文件名中的32),即使文件是64位... –
謝謝。我無法在其他電腦上試用,因爲我沒有其他電腦。最奇怪的是,我有另一個應用程序,加載得很好,但這個不...我真的越來越緊張... – rpvilao