Regarding WinRT and external libraries
Stefan Dösinger
stefandoesinger at gmail.com
Wed Jan 19 07:53:34 CST 2022
Am Mittwoch, 19. Jänner 2022, 01:32:55 EAT schrieb Bernhard Kölbl:
> Hello everyone,
> *What are the plans on handling the reuse of common COM-objects across
> different WinRT dlls? E.g. Creating a vtable for something like
> IVector<HSTRING>, every time it's used in different DLLs, seems
> counterproductive and creates unneeded redundant code, because it
> always provides the same functionality.
It seems a bit similar to IStream, an interface that is commonly implemented
by users of certain APIs (e.g. windowscodecs, msi, gdiplus).
We have certain shared data structures in include/wine/ , e.g. list.h and
rbtree.h . It seems to me adding a header file that adds a basic IVector
implementation around an array of strings might be doable.
Note that we shouldn't export any helper functions from Wine DLLs that don't
exist in the same way on Windows. Hence why a statically compiled header is
preferable in this case.
> *What are the requirements for external libraries to be used in Wine?
> I thought of using something like VOSK or Mozilla DeepSpeech for voice
> recognition. Would those be acceptable?
External libraries generally fall into 3 categories:
1) Small self-contained libraries that can be built as PE DLLs, e.g. zlib,
libpng, etc: See the libs/ directory in Wine. We import the source, build them
with mingw, but we offer distros a way to replace them with their own provided
PE files
2) Huge stuff like wine-gecko and mono: They are shipped as PE builds in a
separate blob that gets downloaded or provided by the distribution
3) Things that need to talk to the host operating system, e.g. opengl, alsa,
xlib, etc: DLLs that interface those libraries are split PE/so modules that
communicate past the windows/unix boundary with NT syscall like mechanisms.
I guess the speech libraries probably fall in category 2, or maybe 3. Doing
this as a split PE/so module might be helpful if those libraries talk to
special hardware or aren't freely redistributable. I particularly have Mac OS
in mind here, with its proprietary Siri things and Neural Engine.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20220119/9bfc0db8/attachment.sig>
More information about the wine-devel
mailing list