Searching for an answer to my problem, comp.emulators.ms-windows.wine archives at google throw up a post [1] suggesting looking into tools/specmaker.
Sources checked out from winehq.com CVS as of last week, updated today, have tools/specmaker as an empty directory.
Where might I be able to investigate specmaker?
Is specmaker still viable?
FWIW, my problem is the oft-asked "How do I call functions in a Windows DLL from an ELF process?" I appreciate WineLib is an option, and have run into a number of snarls along that path:
1. I have created a .dll.so to wrap calls to the offending Windows DLL. Calls are made through static function pointers which have been initialised in the .dll.so by calls to GetProcAddress() from what would be the DllMain() function there. I've not managed to get Wine to call that DllMain() function of my .dll.so, other than through a breakpoint in the debugger, and explicitly calling the function at that time. This way, my code runs even returning from calls to the Windows DLL, but mysteriously, no output file is written!
2. I occasionally see user32.dll.so barf with a SEGV with the call stack mentioning res_146() deep during the first call to wine_dlopen().
I've also had a look at avifile, mplayer, and xine, to investigate how they do things. Linking avifile/plugins/libwin32/loader/libloader.a to my application means I can run as far as attempting to execute DllMain() on my Windows DLL before I see gut-wrenching a SEGV.
What are other people doing?
-- Kevin.
[1]
FWIW, my problem is the oft-asked "How do I call functions in a Windows DLL from an ELF process?" I appreciate WineLib is an option, and have run into a number of snarls along that path:
Well, see me discussing that with Bill a few days ago on the mailing list archives. Basically you have to make the whole ELF process into a WineLib app, at the moment you can't just call out from a standard linux binary into WineLib. IIRC mplayer does this by copy and pasting some wine code, then hacking it lots, even then that's only for codecs which are extremely simple programs.
The basic problem is that there isn't any good way to initialise WineLib without using the wine loader program at the moment.