Having two versions of Win32 executable is IMHO not very practical, as 99% of the code would be same for both applications.
That wasn't exactly what I intended. You said in your original email,
We use DLL that depends on some Win32 drivers.
My question is, could you ship a Linux version of this DLL (.so) that calls the Linux drivers instead?
The original question was about loading Linux .so files directly from .exe. How do we load (dlopen, dlsym) a .so library from .exe running under Wine ? This would solve our problem.
You can't exactly. If you make your app a winelib app, then you can, but you won't be able to link such a beast for Windows, that is, as a .exe rather than a .exe.so.
Again, my suggestion is to have a Windows version of the DLL that calls the Windows drivers, and a Linux version of the same .dll that is a winelib dll (.dll.so) that calls the Linux drivers. The rest of the code would remain the same, but you could either install the appropriate version depending on whether you're running in Linux, or use some DLL override magic to specify which to use in Wine.
Hope that helps, --Juan