On Mon, Sep 6, 2021 at 9:54 PM Zebediah Figura wrote: > The basic problem is that applications can and often do ship with PE > builds of cross-platform libraries. These libraries can be ahead of > Wine's system libraries, behind them, or even built with custom patches. > Accordingly we really don't want to load "our" freetype in place of > "their" freetype, or "theirs" in place of "ours". But because of the way > the Win32 loader works, you can generally only have one DLL of a given > name loaded in a process, and further attempts to dlopen() [as it were] > "libfreetype-6.dll" will return the handle to the already loaded > library, potentially breaking either Wine or the application.
I don't know the details here, but my immediate thought when reading this is that you need some kind of namespace. I then found that linker namespaces are a thing, perhaps they would provide the solution for you. It sounds like the OpenGL shim loader solution listed on the glibc wiki might work for your use-case. Or perhaps the LD_AUDIT feature would also work. https://www.sourceware.org/glibc/wiki/LinkerNamespaces -- bye, pabs https://wiki.debian.org/PaulWise