Windows 7 - Windows Vista compatibility layer software?

2

1

I've bought a dictionary which came with a software version of the dictionary. Unfortunately, while this installs on both my Windows Vista and Windows 7 PCs, it will crash when I run it on Windows 7 (but not on Vista).

Is it possible to install some Windows Vista compatibility DLLs which will make it possible to run the dictionary software EXE on Windows 7 without having to install a Windows Vista instance inside VirtualBox?

(as an aside, the software runs on a stock version of Windows 7 in virtualbox without my Sony Vaio added customizations. is there then perhaps some other way to solve the problem without using virtualbox (whose disk images are occupying too much space on my small hard drive)?

!SESSION 2014-09-21 11:11:54.458 
eclipse.buildId=unknown
java.version=1.7.0_11
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_EN
Command-line arguments:  -os win32 -ws win32 -arch x86
!ENTRY org.eclipse.osgi 2014-09-21 11:11:55.677 
!MESSAGE Application error 
!STACK 1 java.lang.UnsatisfiedLinkError:
C:\Users\Neil\.edpan\hoepli\picchi\org.eclipse.osgi\bundles\39\1\.cp\swt-win32-3139.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(ClassLoader.java:1939)
  at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)  
  at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1838)   
  at java.lang.Runtime.loadLibrary0(Runtime.java:845)   
  at java.lang.System.loadLibrary(System.java:1084)     
  at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123)     
  at org.eclipse.swt.internal.win32.OS.<clinit>(OS.java:18)     
  at org.eclipse.swt.widgets.Display.<clinit>(Display.java:125)     
  at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:381)
  at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:155)   
  at edPan.ui.application.Application.run(Application.java:18)
  at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226)  
  at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
  at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:601)
  at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
  at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
  at org.eclipse.core.launcher.Main.run(Main.java:973)
  at org.eclipse.core.launcher.Main.main(Main.java:948)
  at org.eclipse.core.launcher.Main2.main(Main2.java:46)

John Sonderson

Posted 2014-09-20T11:15:03.240

Reputation: 2 816

2If the software runs on a different windows 7 machine then the problem is of a missing dependency problem and compatability mode is unlikely to help – Ramhound – 2014-09-20T12:39:56.170

I've found the problem. My Windows Vista is a 32-bit machine and my Windows 7 is a 64-bit machine, and the software tries to load a 32-bit DLL. – John Sonderson – 2014-09-21T09:14:41.897

However I'm not sure about how to solve the problem. – John Sonderson – 2014-09-21T09:21:38.510

32-bit software can loaded 32-bit dlls on a 64-bit operating system. Its a Java program this should be easy to do. Its clear what your actually doing is trying to compile a 64-bit java program and trying to reference a 32-bit dll which isn't possible – Ramhound – 2014-09-21T12:43:30.633

I didn't compile anything. I just ran the install script and ended up with an executable that just displays a popup window pointing to the error contained in the above log file. So I guess there is nothing I can do about it. – John Sonderson – 2014-09-21T12:57:26.250

Do you have the required software for this program to run? Because the error message indicates YOU DO NOT. – Ramhound – 2014-09-21T14:30:27.670

Sorry. After checking back once again I found out the software is only supported on Windows XP and Windows Vista but not on Windows 7. Too bad there's no way to run it on Windows 7. – John Sonderson – 2014-11-07T13:19:42.943

1One would have to work really hard to write a Java application that supported Vista and not Windows 7. – Ramhound – 2014-11-07T13:36:52.667

Maybe the application makes JNI (Java Native Interface) calls to the system or something like that. I thought this would not be necessary for a simple word dictionary application, but as the error reports, swt-win32-3139.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform, so I guess the application is not written in pure Java for some reason. – John Sonderson – 2014-11-07T14:31:13.237

You need to supply a 64-bit version of the swt-win32-3139.dll if you want to run it on a 64-bit operating system. – Ramhound – 2014-11-07T15:31:55.153

Answers

2

It will crash when I run it on Windows 7 (but not on Vista).

You need to run your software in compatability mode.

To change compatibility settings manually for a program, right-click the program icon, click "Properties", and then click the "Compatibility" tab.

You will see a dialog similar to the following:

enter image description here

  • Compatibility mode - Runs the program using settings from a previous version of Windows. Try this setting if you know the program is designed for (or worked in) a specific previous version of Windows.

Select Windows Vista for this option.

  • Run in 256 colors - Uses a limited set of colors in the program. Some older programs are designed to use fewer colors.

  • Run in 640 × 480 screen resolution - Runs the program in a smaller-sized window. Try this setting if the graphical user interface appears jagged or is rendered improperly.

  • Disable visual themes - Disables themes on the program. Try this setting if you notice problems with the menus or buttons on the title bar of the program.

  • Disable desktop composition - Turns off transparency and other advanced display features. Choose this setting if window movement appears erratic or you notice other display problems.

  • Disable display scaling on high DPI settings - Turns off automatic resizing of programs if large-scale font size is in use. Try this setting if large-scale fonts are interfering with the appearance of the program. For more information, see Make the text on your screen larger or smaller.

  • Privilege level - Runs the program as an administrator. Some programs require administrator privileges to run properly. If you are not currently logged on as an administrator, this option is not available.

  • Change settings for all users - Lets you choose settings that will apply to all users on this computer.

Source Make older programs run in this version of Windows

DavidPostill

Posted 2014-09-20T11:15:03.240

Reputation: 118 938

I've tried executing the program in Windows Vista compatibility mode as you pointed but that did not help. I still get exactly the same error: java.lang.UnsatisfiedLinkError: C:\Users\JohnSondrson.edpan\hoepli\picchi\org.eclipse.osgi\bundles\39\1.cp\swt-win32-3139.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform – John Sonderson – 2014-09-21T09:18:39.703

The strange thing is I've installed that same program on a 64-bit stock version of Windows 7 in Oracle VirtualBox and had no problems running it (does not complain about the library). Any help understanding this issue would be deeply appreciated. – John Sonderson – 2014-09-21T09:20:57.603