Apache OpenOffice (AOO) Bugzilla – Issue 121258
unowinreg.dll: can't load ia 32-bit .dll on a amd 64-bit platform
Last modified: 2020-05-11 23:23:33 UTC
The unowinreg.dll from OpenOffice SDK does not work with Windows Java 64-bit VM. OpenOffice client applications built with unowinreg.dll will not work on 64bit 64-bit Windows with Java 64-bit VM installed. As 64-bit Windows and 64-bit Java VM is very common now, this makes OpenOffice client applications unavailable on many platforms. A 64-bit unowinreg.dll and a mechanism for switching between 32-bit and 64-bit unowinreg.dll should be provided in the OpenOffice loader in OpenOffice SDK. The console log is below. C:\>java -version java version "1.7.0_09" Java(TM) SE Runtime Environment (build 1.7.0_09-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) C:\>java -jar D:calcmosaic.jar Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\imacat\AppData\Local\Temp\unowinreg1072712583236131558.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(Unknown Source) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.load0(Unknown Source) at java.lang.System.load(Unknown Source) at com.sun.star.lib.loader.WinRegKey.<clinit>(WinRegKey.java:81) at com.sun.star.lib.loader.InstallationFinder.getPathFromWindowsRegistry(InstallationFinder.java:197) at com.sun.star.lib.loader.InstallationFinder.getPath(InstallationFinder.java:105) at com.sun.star.lib.loader.Loader.getCustomLoader(Loader.java:170) at com.sun.star.lib.loader.Loader.main(Loader.java:130) C:\>
As AOO on Windows is only a 32 Bit application I am tempted to set this as an Enhancement rather than a defect, but would appreciate advise from those more knowledgeable.
There are no plans to move to 64-bit. Therefore it's sufficient to still provide a 32-bit "unowinreg.dll".
Reopening. unowinreg.dll is a library used by UNO Java applications to query the Windows registry in order to find the OpenOffice installation. When the UNO Java application is run with a 64 bit JVM, the 32 bit library cannot be loaded. We should embed both 32 and 64 bit versions of the library, and the glue code that we embed in all client applications should detect if the application is run inside a 32 or a 64 bit JVM, and try to load the proper version the library. Cf. https://svn.apache.org/viewvc/openoffice/trunk/main/odk/source/com/sun/star/lib/loader/WinRegKey.java?revision=1413471&view=markup#l64 https://svn.apache.org/viewvc/openoffice/trunk/main/odk/source/unowinreg/win/unowinreg.cxx?revision=1413471&view=markup
Changing from defect to enhancement.