Hello
I happened to find wine when researching some undocumented stuff in shell32.dll for my own shell extensions I had written. It was interesting to see how things may be done in windows. I also identified some parts in the wine shell32 which need more attention and plan to submit some patches concerning that after I have familiarized myself a little more with wine.
Since I had no Linux system at my hands I tried to use the Visual C 5 compiler on my windows system to compile the shell32 dll and found some problems with that. Separate from some wine specific project definitions which need to be made for Visual C to process the wine headers Iand which I probably haven't done all properly) there was one problem with function pointer definitions.
All wine headers seem to declare function pointers like
<return value> WINAPI (*<function pointer name)(<parameter list>)
Visual C 5 does not like the WINAPI (eg __stdcall) outside of the brackets and requires:
<return value> (WINAPI *<function pointer name>)(<parameter list>)
I could also not find any comprehensible ANSI C description which would care to explain what would be the correct way of function pointer declarations with a calling convention identifier. I tried to figure out how this could be solved. Declaring WINAPI to be empty and telling Visual C to use __stdcall as default gives other problems with internal wine functions without explicit calling convention declaration and with a variable argument list, which requires __cdecl.
The only way I could find was to adjust the function pointer definitions in the affected headers. Of course this goes quite far and might cause problems with other compilers.
As I will soon have a new development machine on which I will install Linux alongside of Windows I can fairly easily check if this would cause problems with gcc, but wine seems to care for more compilers than that and I have no idea if such a change would cause problems (it probably would anyhow :-| ).
Maybe there is someone on this list which can give me an direct answer to this.
Rolf Kalbermatter