- The sockets trick was the simplest way I could figure out how to do
IPC between a linux process and a wine process. However, is there are any better or faster way to do this? As far as I know I can't use
Your .exe can make regular linux syscalls as it's really running on linux. So you can essentially do whatever a regular linux application would, given constraints enforced by wine's signal handling and such. But all simple things like opening a pipe, using ipc() call etc will work. The only thing is that you need to code syscall() and a couple of wrappers for specific syscalls you want to use, but that's a simple matter and glibc sources are a reasonable reference for that.
This assumes that I'm using winelib, correct?
Why so? I explicitly mention the .exe. So, no winelib. To the contrary, this assumes that you run your regular .exe under wine.
There's nothing linux-only about generating syscall code, you can compile your .exe program say using mingw or Visual C++ as long as you've properly implemented syscall() in [inline] assembly. Presumably, the calling conventions for such a syscall() can be set such that the stack layout will match. Just have a look at the glibc sources.
Of course the program will crash on windows, but on linux it should just work and provide a gateway to calling the functions from the .dll that you need. That's what you're after, right?
Cheers, Kuba