Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


On Windows why can it not use the native STL available there? 

I think it is because of compatibility with existing binary extensions written in C++ that are 
using stlport, so LibreOffice itself must keep using it so that its libraries are compatible with 
such extensions. So when we can declare an ABI break, yeah, then we can stop using stlport on 
Windows.

(Somebody please correct me if I have understood wrong.)

Why did they start using stlport on Windows in the first place, I don't know, but I can guess that 
Microsoft's STL was too broken back in the days when OOo was built using MSVC .NET (2003), or even 
earlier. And apparently extensions built at that time are still supposed to work. (Hmm, hopefully 
such binary extensions built with an ancient compiler come with their own copy of the (compiler 
version -specific) C/C++ runtime, because we ship only that which LibreOffice itself needs. Or we 
should, I think in 3.3 we still ship msvcr71.dll for Java's jvm.dll's sake, even if we shouldn't.)

Is it because you need to be able to build with non-MS compilers which don't
come with appropriate redistributable libraries?

Not really; C++ code compiled with different compilers is not binary compatible anyway. I guess the 
only other compiler that is relevant on Windows for us would be gcc (i.e. "MinGW"), and if/when we 
eventually manage to start building LibreOffice with gcc (in a cross-compiling manner, for sure), 
we will break ABI anyway.

Anyway, here's what it links to on Linux (Ubuntu 10.10):
$ ldd idxdict

Unfortunately not really useful as on Linux, STL is part of the normal libstdc, isn't it, so one 
doesn't really see if it imports also STL stuff from it, or just other C++ library. 

But anyway, I should just have checked myself, looking at the imports of idxdict .exe shows that it 
indeed does import quite much from stlport_vc7145.dll.

(Yeah, the name for the stlport DLL is heavily misleading, there is no VC71 involved in building a 
current OOo/LO version... But that name can't be changed without breaking existing binary 
extensions.)

--tml



Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.