lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Wed, Feb 24, 2010 at 8:04 AM, Ben Harper <ben@imqs.co.za> wrote:
> Not everyone wants this. Particularly if you're deploying the CRT as a bunch of DLLs alongside your app, instead of SxS deployment.

I agree with your first statement, however I always deploy the CRT as
a bunch of DLLs alongside my app, and I find that using
_BIND_TO_CURRENT_VCLIBS_VERSION makes this kind of deployment easier.

If you're using the initial release of Visual Studio 2008, then it is
a non-issue, however once you update to service pack 1 or another
similar update, things get interesting. I've found that applications
built with VS2008 will only work with the precise version of the VC
libs which they were built against (presumably so that if you
accidentally depend upon a bug in an early version of the libraries,
adding newer libraries side-by-side won't break your application) -
they will not work with newer or older versions of the VC libs. This
behaviour is all fine and well, however the VC2008 redist folder only
holds the latest version of the VC libs, so copying the DLLs from the
redist folder and placing them along side your application only works
if you compile your whole application with
_BIND_TO_CURRENT_VCLIBS_VERSION. Hence compiling the whole application
with _BIND_TO_CURRENT_VCLIBS_VERSION makes deployment simple - just
copy the runtime DLLs and manifest file from the VC2008 redist folder
and place them along side your application. The important part is that
you compile the whole application with that flag, as if you compile
parts of it with, and parts of it without, then the manifest
files/resources for your application will refer to both the original
version of the VC libs and the latest version of the VC libs, forcing
you to distribute two versions of the VC libs side-by-side. For this
reason, despite the fact that I use the flag all the time, I do not
think that it should be the default for Lua - adding it will make
deployment more complex for people who do not know about the flag,
whereas people who do know about it can easily add it to the compile
options themselves.