At 09:44 AM 28/04/2001 -0500, you wrote:
Okay, here are the traces. Here (ftp://sourceharvest.com/pub/wine_qb4.log.gz) is the QB4 trace. QB4 printing works.
The other (ftp://sourceharvest.com/pub/wine_qb5.log.gz) is the QB5 trace. QB5 printing doesn't work.
The 2 traces are showing the same problem : the 2 versions of your app are trying to loadlibrary on the Wineps driver. This is not working in both cases. The difference comes from the app itself : QB4 is proceding anyway to a call to CreateDC (that's the usual way of printing after all) and this call succeeds - because Wine has been coded for this case- , while QB5 don't want to continue. My impression is that QB5 is a more sophisticate application that is actually *testing* the errors returned by the system. Unfortunately, that is also breaking its capability of printing under Wine.
I am not sure why this LoadLibrary fails (it returns 2, file not found). I have done a quick and dirty LoadLibrary("WINEPS.DRV") in a winelib application : it fails. LoadLibrary("WINEPS.DLL") succeeds. So this is the problem it seems. LoadLibrary should be tweaked. I think that the code to patch is in library/loader.c, line 96 /* check for .dll or .exe extension to remove */ if (ext && (!strcmp( ext, ".dll" ) || !strcmp( ext, ".exe" ))) p = ext
After the name problem is solved, the following problem is probably loading a 32 bits builtin library from 16 bits code. I don't remember clearly now (it's past 2 am for me) but the problem has already occured for other dlls.
I think it was you who asked about the difference between 16 and 32 bits code; while you got a correct answer, there is also a first glance trick, useful when in one application you have transitions between 16 and 32 bits code : the 16 bits calls to the Api are shown in uppercase, the 32 bits are in lowercase.
Gerard