On Monday, 4 December, 2017 15:44, Jens Alfke <j...@mooseyard.com> wrote:

>> If one object is using, for example, the multithreaded runtime and
>>the others are using the single threaded runtime (for example), and
>>the third perhaps the subsystem runtime

>From the OP’s other thread here it looks like they’re developing for
>iOS or macOS, neither of which have the sorts of multiple runtimes
>you’re talking about (is that a Windows thing?)

I had believed it was Windows since "DLL" was mentioned and that is a Windows 
(or OS/2) contraction for dynamic load library.  I don't think anything else 
uses that term in quite the same way.

The multiple library is a Microsoft thing designed to ensure a continuous 
revenue stream by ensuring that each version of their development platform is 
incompatible with all prior versions.  Once you start using Microsoft tools for 
anything you are stuck (locked in) into a perpetual cycle of re-writing and 
re-development of every single thing due to their planned obsolescence 
requiring re-purchasing tools and redeveloping everything practically 
fortnightly.  The "newer fangled" the technology (from a Microsoft hype 
perspective) the shorter its viability.  This is in contrast to where, for 
example, one avoids Microsoft tools like the plague, and you end up with stuff 
that works perfectly for decades on multiple versions of Windows.  This does 
not generate continuous upgrade revenue for either Microsoft or the developer 
(if it ain't broke why fix it) so typically there is a preponderance of 
deliberate lock-in by all parties in the Microsoft world.

>Also, I don’t see how static libraries can end up using different
>runtime libraries, since the runtime gets linked in by the linker,
>after the static libs are compiled. But maybe that’s another Windows

Because for the greater certainty of lock-in, the runtime entry point names are 
different depending on the version of the Toolchain and the particular link 
library you compiled the object for.  In many cases you cannot simply remove 
the linkage records from the objects and link with a substitute library (though 
sometimes you can).  You have to rebuild the whole thing again. You can link 
against the platform subsystem library, but that is recommended against because 
it makes the resultant executable too portable across versions of Windows.

sqlite-users mailing list

Reply via email to