[Boost-users] Linking with dynamic boost thread library

1,265 views
Skip to first unread message

Igor

unread,
Apr 8, 2009, 9:14:33 AM4/8/09
to boost...@lists.boost.org
I build the thread library with the following cmd command:
bjam.exe toolset=msvc --with-thread --prefix=C:\boost\
variant=debug,release link=shared install
after which I get the following libs:

boost_thread-vc80-mt.lib
boost_thread-vc80-mt-1_38.dll
boost_thread-vc80-mt-1_38.lib
boost_thread-vc80-mt-gd.lib
boost_thread-vc80-mt-gd-1_38.dll
boost_thread-vc80-mt-gd-1_38.lib

In my application, I placed #define BOOST_THREAD_DYN_LINK in all the
cpp files where thread library is included.

I get the following error:

LINK : fatal error LNK1104: cannot open file
'libboost_thread-vc80-mt-gd-1_38.lib'

How many mistakes have I done?
_______________________________________________
Boost-users mailing list
Boost...@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users

Ovanes Markarian

unread,
Apr 8, 2009, 9:27:00 AM4/8/09
to boost...@lists.boost.org
Hi!

your project file must explicitly link with dynamic C++ runtime. If your project is set to use static C++ runtime it will use static threading lib. If you e.g. rename boost_thread-vc80...lib to libboost_... C++ linker will blame, that you are mixing static and dynamic runtimes.


Regards,
Ovanes

Igor MI

unread,
Apr 8, 2009, 9:46:14 AM4/8/09
to boost...@lists.boost.org

Hi Ovanes,
My project is set to Multi threaded debug dll. (options/c++/code
generations/runtime library in VS2005)
I used to link against static boost thread libraries until now with the same
setting without any problems. I switched to dynamic thread libraries in
order to solve the hook problem with the _pRawDllMain pointer which was
introduced in 1.37. This hook interferes with MFC.

I don't know why the compiler is looking for a lib... when I #define
BOOST_THREAD_DYN_LINK ? Is there some other setting in the IDE where I
should be pointing out that I want to link to a dynamic thread library?

--
View this message in context: http://www.nabble.com/Linking-with-dynamic-boost-thread-library-tp22950286p22950780.html
Sent from the Boost - Users mailing list archive at Nabble.com.

Steven Watanabe

unread,
Apr 8, 2009, 10:13:15 AM4/8/09
to boost...@lists.boost.org
AMDG

Igor MI wrote:
> My project is set to Multi threaded debug dll. (options/c++/code
> generations/runtime library in VS2005)
> I used to link against static boost thread libraries until now with the same
> setting without any problems. I switched to dynamic thread libraries in
> order to solve the hook problem with the _pRawDllMain pointer which was
> introduced in 1.37. This hook interferes with MFC.
>
> I don't know why the compiler is looking for a lib... when I #define
> BOOST_THREAD_DYN_LINK ? Is there some other setting in the IDE where I
> should be pointing out that I want to link to a dynamic thread library?
>

https://svn.boost.org/trac/boost/ticket/2874

In Christ,
Steven Watanabe

Igor MI

unread,
Apr 8, 2009, 10:38:31 AM4/8/09
to boost...@lists.boost.org

Thanks.

But now I wonder about what Ovanes said. Why did I linked successfully with
static thread library when my project is set to multi threaded debug dll?

--
View this message in context: http://www.nabble.com/Linking-with-dynamic-boost-thread-library-tp22950286p22951899.html


Sent from the Boost - Users mailing list archive at Nabble.com.

_______________________________________________

Steven Watanabe

unread,
Apr 8, 2009, 10:50:32 AM4/8/09
to boost...@lists.boost.org
AMDG

Igor MI wrote:
> But now I wonder about what Ovanes said. Why did I linked successfully with
> static thread library when my project is set to multi threaded debug dll?
>

You can link using the dll runtime and the static boost_thread.

Ovanes Markarian

unread,
Apr 8, 2009, 11:00:38 AM4/8/09
to boost...@lists.boost.org
What I mean is the reversed order. You can not link the static runtime and dynamic boost_thread or any other lib.

Green, Jason M NSWCDL, W33

unread,
Apr 8, 2009, 12:40:07 PM4/8/09
to boost...@lists.boost.org

I’m having a similar problem with my project.  I’d like to use the dlls but no matter what, the compile warns me that it “cannot open file ‘boost_regex-vc80-mt-gd-1_38.lib’”

 

I’m trying to find where I can set the project (in vis studio 2005) to use the dynamic link libraries as opposed to the static.  Based on previous entries in this thread, I assume that is the first step that I need to take.

 

Can someone tell me where to set this?

Jason

Ovanes Markarian

unread,
Apr 8, 2009, 12:59:14 PM4/8/09
to boost...@lists.boost.org
Project Properties -> C/C++ -> Code Generation: Runtime Library: Multi-Threaded Debug DLL (/MDd)
or Multi-Threaded DLL (/MD) for release version


Good Luck,
Ovanes



On Wed, Apr 8, 2009 at 6:40 PM, Green, Jason M NSWCDL, W33 <jason.m...@navy.mil> wrote:

I’m having a similar problem with my project.  I’d like to use the dlls but no matter what, the compile warns me that it “cannot open file ‘boost_regex-vc80-mt-gd-1_38.lib’”

 

I’m trying to find where I can set the project (in vis studio 2005) to use the dynamic link libraries as opposed to the static.  Based on previous entries in this thread, I assume that is the first step that I need to take.

 

Can someone tell me where to set this?

Jason

 

From: boost-use...@lists.boost.org [mailto:boost-use...@lists.boost.org] On Behalf Of Ovanes Markarian
Sent: Wednesday, April 08, 2009 11:01 AM
To: boost...@lists.boost.org
Subject: Re: [Boost-users] Linking with dynamic boost thread library

 

What I mean is the reversed order. You can not link the static runtime and dynamic boost_thread or any other lib.

Steven Watanabe

unread,
Apr 8, 2009, 1:03:22 PM4/8/09
to boost...@lists.boost.org
AMDG

Green, Jason M NSWCDL, W33 wrote:
> I'm having a similar problem with my project. I'd like to use the dlls but
> no matter what, the compile warns me that it "cannot open file

> 'boost_regex-vc80-mt-gd-1_38.lib'"
>

You /are/ linking to the dll then.

> I'm trying to find where I can set the project (in vis studio 2005) to use
> the dynamic link libraries as opposed to the static. Based on previous
> entries in this thread, I assume that is the first step that I need to take.
>

Have you added the location of the libraries to the library paths?
(Tools->Options->Projects and Solutions->VC++ Directories, I think)

> Can someone tell me where to set this?
>

In Christ,

Green, Jason M NSWCDL, W33

unread,
Apr 8, 2009, 1:05:23 PM4/8/09
to boost...@lists.boost.org

Thanks.

Green, Jason M NSWCDL, W33

unread,
Apr 8, 2009, 1:11:35 PM4/8/09
to boost...@lists.boost.org
I have a directory in my project call Boost. I added the directory to the
library files list.
In this directory I have the libboost*.lib files and the boost*.dll files.
I am able to get it working with no problem if I only have the libboost*.lib
files in there. If I rename them, and add the dll into the directory, it
will not build. That is where it will give me the error saying that it is
looking for libboost*.lib

-----Original Message-----
From: boost-use...@lists.boost.org
[mailto:boost-use...@lists.boost.org] On Behalf Of Steven Watanabe
Sent: Wednesday, April 08, 2009 1:03 PM
To: boost...@lists.boost.org
Subject: Re: [Boost-users] Linking with dynamic boost thread library

Steven Watanabe

unread,
Apr 8, 2009, 9:15:49 PM4/8/09
to boost...@lists.boost.org
AMDG

Green, Jason M NSWCDL, W33 wrote:
> I have a directory in my project call Boost. I added the directory to the
> library files list.
> In this directory I have the libboost*.lib files and the boost*.dll files.
> I am able to get it working with no problem if I only have the libboost*.lib
> files in there. If I rename them, and add the dll into the directory, it
> will not build. That is where it will give me the error saying that it is
> looking for libboost*.lib
>

Whoa. I'm confused. Is the linker complaining about
libboost*.lib or boost*.lib? If you define BOOST_ALL_DYN_LINK
or BOOST_<library name>_DYN_LINK the compiler
will look for the import libraries for the dlls.

> Green, Jason M NSWCDL, W33 wrote:
>
>> the compile warns me that it "cannot open file
>> 'boost_regex-vc80-mt-gd-1_38.lib'"
>>
>>

In Christ,

Green, Jason M NSWCDL, W33

unread,
Apr 9, 2009, 8:03:29 AM4/9/09
to boost...@lists.boost.org
Steve,
Welcome to my world. I spend a lot of time confused.


Assume that I have a directory (GLOBALS/Boost). I point to this directory
in VC as a library directory.

In another directory I have boost*.lib, libboost*.lib, and boost*.dll.

I copied the boost*.lib into my GLOBALS/Boost, then compiled and ran. That
worked.

I moved that library back out, and put libboost*.lib in. I then put the
#define BOOST_REGEX_DYN_LINK at the top of my .cpp file. That compiled and
worked.

Finally, I moved out the libboost.lib back out and put the boost*.dll into
that directory. I tried compiling and that is when I got the link error
saying that it cannot find boost*.lib

If the program compiles and runs the same only based on whether boost*.lib
is there, what function does the boost*.dll serve

This is where I'm confused? I scoured my drive to make sure there weren't
boost*.dll /*.lib floating around and I deleted them all.

Jason


-----Original Message-----
From: boost-use...@lists.boost.org
[mailto:boost-use...@lists.boost.org] On Behalf Of Steven Watanabe
Sent: Wednesday, April 08, 2009 9:16 PM
To: boost...@lists.boost.org
Subject: Re: [Boost-users] Linking with dynamic boost thread library

John Wilkinson

unread,
Apr 9, 2009, 8:55:09 AM4/9/09
to boost...@lists.boost.org
> If the program compiles and runs the same only based on whether
boost*.lib
> is there, what function does the boost*.dll serve

The boost*.lib files, as I think someone said earlier, are the import
libraries for the boost*.dll run-time libraries. These are what you
link to, in order to use boost*.dll at run time. The DLL files do not
need to be in the link path, only in the executable path when your
program is run. The boost*.lib files need to be in the link path when
you build your program.

John

Green, Jason M NSWCDL, W33

unread,
Apr 9, 2009, 10:16:43 AM4/9/09
to boost...@lists.boost.org
I find it odd then, that I could still run my program with no dlls. I had
moved them all to the recycle bin. All this stuff isn't worth it. I will
just stick w/ the static link libs.

-----Original Message-----
From: boost-use...@lists.boost.org
[mailto:boost-use...@lists.boost.org] On Behalf Of John Wilkinson
Sent: Thursday, April 09, 2009 8:55 AM
To: boost...@lists.boost.org
Subject: Re: [Boost-users] Linking with dynamic boost thread library

Green, Jason M NSWCDL, W33

unread,
Apr 9, 2009, 10:22:59 AM4/9/09
to boost...@lists.boost.org
Sorry guys.

I figured it out. I hadn't actually implemented any code yet that used
regex, so the dll portion wasn't being used. It all works fine now.

Jason

-----Original Message-----
From: boost-use...@lists.boost.org
[mailto:boost-use...@lists.boost.org] On Behalf Of John Wilkinson
Sent: Thursday, April 09, 2009 8:55 AM
To: boost...@lists.boost.org
Subject: Re: [Boost-users] Linking with dynamic boost thread library

Reply all
Reply to author
Forward
0 new messages