On Fri, Jun 06, 2003 at 08:47:31AM +0300, Shachar Shemesh wrote:
Stefan Sperling wrote:
But I can see what functions are being called in the object code (thanks nm). Three of which come from wine:
LoadLibraryA GetProcAddress FreeLibrary
Hi Stefan.
What you just saw is the bare minimum you need in order to load a library. I'm afraid, however, that it is far from all you need.
First, when you load another library, that library may need any DLL at all. In order to assess how much of Wine you need, you need to also look at the DLLs loaded. Also, please bear in mind that GetProcAddress can load other functions, and those functions called.
I don't think there will be a lot of dependencies on other DLLs, apart from the standard C stuff (which is a lot already!). I can only think of one or two, and they do not belong to windows. I have them and I will load them as well. What do I have to look out for when loading a DLL other DLLs depend on? If a DLL calls a function of another DLL, is wine managing the call for me or will my code have to be aware of this, granted I use winelib? Will the requested DLL be loaded automatically? Is the standard C stuff covered by wine? What files from the wine source tree will I need so I have the apropriate code at hand?
What happens if a DLL expects functions from the windows environment in a certain windows DLL not yet implemented in wine? Anything else than my app crashing when those functions are called, that is? How could I provide those functions myself?
Bottom line: I have a lot of questions... Is there any documentation about this? I don't want to bother the wine-devel mailing list too much with these problems since they are not really concerned with developing wine itself.
Wine invented something called "winelib executable". This is an ELF library that can also link to PE DLLs. It appears that your best bet, if you don't want to embark on massive copy/paste activity, is to create your util as a winelib. There are some disadvantges to that as well (a dependancy on Wine, for one).
Will this affect my whole app or can I tuck the winelib dependency away in a seperate module? Again, I bet there's a lot of documentation on that in the sheer amount of wine docs, is there?
Stefan