On Tue, Oct 15, 2024 at 11:43 PM Stefan Dösinger <stefandoesinger@gmail.com> wrote:
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 :-)

If you post as bug on bugzilla, someone might help :-)
 

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.