Boost logo

Boost-Build :

Subject: Re: [Boost-build] msvc 64-bit test targets vs. maifest files
From: Vladimir Prus (ghost_at_[hidden])
Date: 2008-10-12 14:51:08


On Thursday 09 October 2008 00:34:13 Mat Marcus wrote:
> Second attempt (no answer the first time. if no answer again, will try
> boost-users, then boost developers)

Hi Mat,
I was hoping somebody with windows experience would comment, before
impressing the world with my deep lack of knowledge about it, but alas...

> On Fri, Oct 3, 2008 at 11:50 AM, Mat Marcus <mat-lists_at_[hidden]> wrote:
> > For several years I have been working with a set of libraries, built
> > with boost build and dependent upon some boost libraries. I've been
> > working on a 32-bit machine, but I have occasionally been building
> > 64-bit targets to try to help support clients who will be using my
> > library on 64-bit machines. My suite of boost-build test targets
> > (unit-test, run, etc.) for my lib is a bit inconvenient when on 32 bit
> > machines, since I get an error dialog each time I build, but sometimes
> > I want to test as much as possible. The commands I use to build (msvc
> > 9) are:
> >
> > ## 32 bit
> > bjam msvc debug
> >
> > ## 64 bit
> > bjam msvc debug architecture=x86 address-model=64
> > define=BOOST_DISABLE_ABI_HEADERS
> >
> > Yesterday, I tried to build/run the 64 bit targets for the same files
> > using the same invocation on a 64-bit Vista machine. I thought that
> > perhaps my code would exhibit some 64-bit run-time issues, but things
> > didn't go that far. Instead, I got manifest/DLL-related problems for
> > each test. Here is an example of the error that I receive each time
> > boost build tries to run a built artifact:
> >
> > ====== BEGIN OUTPUT ======
> > The application has failed to start because its side-by-side
> > configuration is incorrect. Please see the application event log for
> > more detail.
> >
> > EXIT STATUS: 14001
> > ====== END OUTPUT ======
> >
> > The corresponding Application Event Log Entry is:
> >
> > Activation context generation failed for
> > "c:\asl\staff\mmarcus\sandbox\built_artifacts\documentation\examples\enum_ops_example.test\msvc-9.0\debug\address-model-64\architecture-x86\link-static\threading-multi\enum_ops_example.exe".
> > Dependent Assembly
> > Microsoft.VC90.DebugCRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"
> > could not be found. Please use sxstrace.exe for detailed diagnosis.

So, at the link time, reference to the right library is made, but at runtime, the library is not available.
Do you know the location of the CRT library found at link time? It probably has a .manifest file giving
the names of actual .dll files. Are those .dll founds located in directory in PATH? Maybe
the VisualStudio install process installs those libraries so that they are available to linker,
but not at runtime? Does that sxstrace.exe tool tell anything?

- Volodya


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk