Subject: Re: bug#8562: Emacs 23.1 and later don't work in windows 98

From: Eli Zaretskii <[email-masked]>
Date: Mon, 30 May 2011 21:43:21 +0300

> Date: Mon, 30 May 2011 17:12:26 +0200
> From: oslsachem <[email-masked]>
> Cc: [email-masked]
> 
> I remember having downloaded the MSLU from
> http://www.microsoft.com/downloads/en/details.aspx?FamilyID=73ba7bd7-ed06-4f0d-80a4-2a7eeaee17e2
> some time ago.
> 
> "The download contains UnicoWS.dll (the MSLU binary), and UnicoWS.pdb
> which can be used when debugging."
> 
> These files are extracted in the directory that the user chooses.
> 
> I had no idea where to put them, so I chose the windows subdirectory
> which seemed to contain the most dll files and which happened to be
> "system".

The safest place is the same directory where you have emacs.exe.  But
doing what you did is also OK.

> Unfortunately, after adding the "system" directory to the path ( or
> another one which contains the unicows.dll  ) the same error ( 120 )
> still appears in Emacs.
> 
> > If you have that package installed, can you try compiling a simple
> > program that just calls these two functions, and run it on the Windows
> > 98 machine to see if they fail in the same way?
> 
> They seem to work in the sample program:
> 
> http://www.speedyshare.com/files/28718617/sample.c
> 
> http://www.speedyshare.com/files/28718618/sampleGDB.txt

The difference here is that your sample program dynamically loads
unicows.dll:

> Breakpoint 1, WinMain (hInstance=0x400000, hPrevInstance=0x0, 
>     lpCmdLine=0x81631ea2 "", nCmdShow=10) at sample.c:139
> 139	  hm_unicows = LoadLibrary("unicows.dll");

whereas Emacs doesn't, AFAICT.  Could you try loading that DLL in
Emacs, by adding just the single line as the one above to some
function that is run early during the startup, e.g. in globals_of_w32?
(There's no need to go to extra lengths such as calling
GetOutlineTextMetricsW and GetTextMetricsW through function pointers.)
Then recompile Emacs and see if that solves the problem.

Thanks.