Hello Alexander,
Am Dienstag, 15. Oktober 2024, 15:18:57 GMT+3 schrieb aleithner@level101.at:
I have previously asked about the problem I'm describing below on openSUSE's forums [1], StackOverflow [2] and Wine's forums [3], where dimesio told me that I could try to ask here. If this is the wrong place to ask, I apologise.
The mailing ist is the right place to ask :-)
I'll try to answer some of your questions below, but I am not much of a winelib expert and sadly winelib is getting relatively little love. In my quick test building a 32 and 64 bit .dll.so worked, but I would not be surprised if there are bugs.
Wine itself has transitioned to a more formal (fake-)syscall and unix call interface to switch between the Windows and the Linux side. I think there are no DLLs left in Wine any more that have the old hybrid PE and ELF linkage.
winegcc -m32 -L/usr/lib64/wine/i386-unix -shared -o myproject.dll myproject_main.c myproject.spec
Does the 32 bit DLL link without the -L path? You shouldn't need it, winegcc and winebuild should know their installation path.
As I've discovered, openSUSE's wine-devel package does not provide any archive files in /usr/lib64/wine/x86_64-unix, whereas wine-devel-32bit does provide archive files under /usr/lib/wine/i386-unix (symlinked with the same directory in /usr/lib64).
It is quite likely a bug on openSUSE's side. They probably didn't even test winegcc with the wine-devel packages, as it is a pretty rare case that someone needs it.
I think your best choice would be to build wine from source and install it to a custom prefix in your home directory. Hopefully the wine-devel packages pull in the right headers etc to make it easy to do.
e.g. in pseudo code:
./configure --enable-win64 --prefix=~/mywine make && make install # no need for sudo. add -j X for faster build export PATH=~/mywine/bin:$PATH
Now you should run winegcc from ~/mywine/bin/winegcc, and it has the 64 bit .a files in ~/mywine/lib/wine/x86_64-unix.
Any .dll.so generated that way should run with your system wide wine installation, so you should be able to copy it to other machines etc. If in doubt check out the oldest Wine version you want your binaries to run on.