"Dimitrie O. Paun" dimi@intelliware.ca writes:
Many people need to link against very simple DLLs that are simple shared libs, no fancy PE features. What we probably need is a tool of sorts that export some sort of ELF import libs. That is, given a regular PE DLL or a Wine ELF DLL, it exports as much as it can into a ELF so library that the program can link to. Of course, the program will also have to link with -lwine for it to work.
Does this sound reasonable/workable?
It will be fairly complex, and will probably add a lot of different constraints, I'm not sure it would really be an improvement over winebuild. If you want a really transparent solution then it should most likely be done directly at the linker/ld.so level.
BTW, I'm not very familiar with the various formats (ELF/PE), what would we be missing if we are to export to ELF? Resources come to mind, but I think we can export some sort of symbol to ELF that our Wine code would understand, so they may not be a problem.
They will still be a problem, you'll need to redo the resource functions to deal with that. Other problems include at least ordinal exports, separate dll namespaces, and initialization order. Then of course you have all the binary compatibility problems with module handles that don't point to the right structures etc.
If you really want to provide a seamless Unix source environment, you pretty much need to give up on full binary compatibility, and do something more like what TWIN was doing. But I don't think that's where we want to go.