
I'm trying to use <link>static and <runtime-link>static with my own code, which depends on boost filesystem, and I have the problem that the linker is passed libboost_filesystem-vc80-mt-sgd-1_41.lib while the debug\link-static\runtime-link-static folder has libboost_filesystem-vc80-sgd-1_41.lib. (I've built bjam from the latest trunk sources and I'm using the latest trunk revision of boost build.) HALP! :) Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode

Emil Dotchevski wrote:
I'm trying to use <link>static and <runtime-link>static with my own code, which depends on boost filesystem, and I have the problem that the linker is passed libboost_filesystem-vc80-mt-sgd-1_41.lib while the debug\link-static\runtime-link-static folder has libboost_filesystem-vc80-sgd-1_41.lib.
(I've built bjam from the latest trunk sources and I'm using the latest trunk revision of boost build.)
HALP! :)
I guess you didn't specify threading=multi while building Boost?

Emil Dotchevski wrote:
I'm trying to use <link>static and <runtime-link>static with my own code, which depends on boost filesystem, and I have the problem that the linker is passed libboost_filesystem-vc80-mt-sgd-1_41.lib while the debug\link-static\runtime-link-static folder has libboost_filesystem-vc80-sgd-1_41.lib.
Emil, in general, it's best to provide the exact command(s) you are running, and the exact error output from whatever tool emit error. If you have Boost.Build project that depends on Boost, I'd recommend setting <define>BOOST_ALL_NO_LIB in project requirements, as the autolink only works if all of Boost is built and installed into some directory, and that directory is added to library search path -- and none of this should be necessary as Boost.Build can directly link to right library without any autolink at all. - Volodya

Volodya, thanks -- it turned out I forgot the BOOST_ALL_NO_LIB. I have another related question. If I don't use <runtime-link>static, obviously the built executable needs the runtime DLLs. My question is, is there a way to specify a directory dependent on the MSVC version that contains the necessary runtime dlls so that Boost Build can run a target that was successfully built? (Arguably, what I'm asking for shouldn't be supported, since the correct way to do this is to have multiple versions of Visual Studio properly installed, whereas I only have VC9 installed, from VC8 I just have the compiler/linker, libraries, runtime DLLs, etc. copied in a folder.) Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode On Wed, Sep 23, 2009 at 10:36 PM, Vladimir Prus <vladimir@codesourcery.com> wrote:
Emil Dotchevski wrote:
I'm trying to use <link>static and <runtime-link>static with my own code, which depends on boost filesystem, and I have the problem that the linker is passed libboost_filesystem-vc80-mt-sgd-1_41.lib while the debug\link-static\runtime-link-static folder has libboost_filesystem-vc80-sgd-1_41.lib.
Emil,
in general, it's best to provide the exact command(s) you are running, and the exact error output from whatever tool emit error. If you have Boost.Build project that depends on Boost, I'd recommend setting <define>BOOST_ALL_NO_LIB in project requirements, as the autolink only works if all of Boost is built and installed into some directory, and that directory is added to library search path -- and none of this should be necessary as Boost.Build can directly link to right library without any autolink at all.
- Volodya
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Emil Dotchevski wrote:
Volodya, thanks -- it turned out I forgot the BOOST_ALL_NO_LIB.
I have another related question. If I don't use <runtime-link>static, obviously the built executable needs the runtime DLLs. My question is, is there a way to specify a directory dependent on the MSVC version that contains the necessary runtime dlls so that Boost Build can run a target that was successfully built?
Only manually: you can have something like: <toolset>msvc-8.0:<dll-path>C:/vc8/lib and it should work for running tests.
(Arguably, what I'm asking for shouldn't be supported, since the correct way to do this is to have multiple versions of Visual Studio properly installed, whereas I only have VC9 installed, from VC8 I just have the compiler/linker, libraries, runtime DLLs, etc. copied in a folder.)
I see. Let me know of the above helps. - Volodya

Volodya, thanks for the suggestion again. Using the depends.exe tool from Microsoft I can see that the two missing DLLs my program needs are MSVCP80D.DLL and MSVCR80D.DLL. I'm guessing that Boost Build passes the path specified by <dll-path> in the PATH env variable and that the program itself doesn't look for these particular DLLs on the PATH. Manually adding the directory on the PATH, or even starting the program from the directory containing the DLLs also doesn't work. By now this is well beyond the scope of Boost Build but I'd still want to get it working. Any ideas? Thanks, Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode On Wed, Sep 23, 2009 at 11:36 PM, Vladimir Prus <vladimir@codesourcery.com> wrote:
Emil Dotchevski wrote:
Volodya, thanks -- it turned out I forgot the BOOST_ALL_NO_LIB.
I have another related question. If I don't use <runtime-link>static, obviously the built executable needs the runtime DLLs. My question is, is there a way to specify a directory dependent on the MSVC version that contains the necessary runtime dlls so that Boost Build can run a target that was successfully built?
Only manually: you can have something like:
<toolset>msvc-8.0:<dll-path>C:/vc8/lib
and it should work for running tests.
(Arguably, what I'm asking for shouldn't be supported, since the correct way to do this is to have multiple versions of Visual Studio properly installed, whereas I only have VC9 installed, from VC8 I just have the compiler/linker, libraries, runtime DLLs, etc. copied in a folder.)
I see. Let me know of the above helps.
- Volodya
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Actually, starting program from directory with the DLLs DOES work, but you need to create manually or to get somewhere .manifest file for them (named Microsoft.VC80.DebugCRT.manifest I think). If you have Visual Studio 9.0 installed you can see example of such manifest file in C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.manifest. Use Google or MSDN for searching "Side-by-Side" for more information. You can also properly install Debug runtime libraries to your computer without installing full Visual Studio if you have access to computer with Visual Studio 8.0 already installed. Use this trick: create empty installer project in Visual Studio 8.0 and manually add to it merge modules Microsoft_VC80_DebugCRT_x86.msm and policy_8_0_Microsoft_VC80_DebugCRT_x86.msm from folder C:\Program Files\Common Files\Merge Modules\. Build this project and get fine .MSI file which can install Debug runtime libraries on any computer. Of course you can't freely redistribute this "product". Only use it on your own computers. -----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Emil Dotchevski Sent: Friday, September 25, 2009 2:55 AM To: boost@lists.boost.org Subject: Re: [boost] Boost build problem Volodya, thanks for the suggestion again. Using the depends.exe tool from Microsoft I can see that the two missing DLLs my program needs are MSVCP80D.DLL and MSVCR80D.DLL. I'm guessing that Boost Build passes the path specified by <dll-path> in the PATH env variable and that the program itself doesn't look for these particular DLLs on the PATH. Manually adding the directory on the PATH, or even starting the program from the directory containing the DLLs also doesn't work. By now this is well beyond the scope of Boost Build but I'd still want to get it working. Any ideas? Thanks, Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode

Emil Dotchevski wrote:
Volodya, thanks for the suggestion again.
Using the depends.exe tool from Microsoft I can see that the two missing DLLs my program needs are MSVCP80D.DLL and MSVCR80D.DLL. I'm guessing that Boost Build passes the path specified by <dll-path> in the PATH env variable and that the program itself doesn't look for these particular DLLs on the PATH. Manually adding the directory on the PATH, or even starting the program from the directory containing the DLLs also doesn't work.
By now this is well beyond the scope of Boost Build but I'd still want to get it working. Any ideas?
Emil, this is starting to get offtopic for the mail boost list. Can you write to boost-build@lists.boost.org? You don't need to subscribe, and can read via gmane. Please be sure to specify the output from depends.exe, and the exact error message you get. Also, are you by chance on a 64-bit system? There were reports about misterious failures to find debug runtime, which were only solved by reinstall of VC. - Volodya
participants (5)
-
Andrey Semashev
-
Emil Dotchevski
-
Emil Dotchevski
-
Vladimir Prus
-
Александр Связин