I am in the process of trying to port a Windows library to Linux (maybe also to Mac, but let's not get ahead of ourselves). The existing library is essentially a facade layer to a number of third-party dlls (mostly COM-based, although one is .NET-based) over which I have no control. These third-party dlls have no UI of their own. Their purpose is to allow access to proprietary data formats. The optimal solution would be to use Wine to link to these third-party dlls in my Linux library, so that apps that use my library would not have to explicitly be run under Wine. I've read enough docs so far to understand that this is well outside the realm of current possibility. So, what are my options here? The best I can think of so far is to have my library layer talk to a separate Windows executable designed to specifically run under Wine. The executable, in turn, will talk to the third-party dlls as necessary. The main problem here is the significant developer effort that would be required to implement the communication layer between the Linux library and the executable running under Wine. I'm really hoping that someone who knows more about Wine can suggest a better, more integrated solution. Thanks.
morrow0233 wrote:> I am in the process of trying to port a Windows library to Linux (maybe also to Mac, but let's not get ahead of ourselves). The existing library is essentially a facade layer to a number of third-party dlls (mostly COM-based, although one is .NET-based) over which I have no control. These third-party dlls have no UI of their own. Their purpose is to allow access to proprietary data formats. > > So, what are my options here?Wine is not some API layer it's an environment that replicates windows (registry, kernel, file system, etc). Because your dlls are not simple API but COM (which most likely involves OLE) the only option you have - run your program under Wine. You can't just "magically" talk to a dll that requires huge infrastructure. As far as your .net "dll" - if it can run under Mono that would be your best option.
Thanks for the quick reply.> Because your dlls are not simple API but COM (which most likely involves OLE) the only option you have - run your program under Wine.Out of curiosity, what would my options be for simple Windows API dlls?
morrow0233 wrote:> Thanks for the quick reply. > > > > Because your dlls are not simple API but COM (which most likely involves OLE) the only option you have - run your program under Wine. > > > Out of curiosity, what would my options be for simple Windows API dlls?As far as vanilla Wine goes, same as winelib - run under Wine. You can look at mplayer to see an extent of Wine "modifications" they made to get it a standalone application.