C++ 如何链接到动态提升库?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2520234/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to link to dynamic boost libs?
提问by testingmysql
I compiled boost lib and got these.
我编译了boost lib并得到了这些。
//Shared/dynamic link libraries
24/03/2010 11:25 PM 53,248 boost_thread-vc80-mt-1_42.dll
24/03/2010 11:25 PM 17,054 boost_thread-vc80-mt-1_42.lib
24/03/2010 11:25 PM 17,054 boost_thread-vc80-mt.lib
24/03/2010 11:25 PM 73,728 boost_thread-vc80-mt-gd-1_42.dll
24/03/2010 11:25 PM 17,214 boost_thread-vc80-mt-gd-1_42.lib
24/03/2010 11:25 PM 17,214 boost_thread-vc80-mt-gd.lib
// Static libs... does not need any dlls
24/03/2010 11:25 PM 381,716 libboost_thread-vc80-mt-1_42.lib
24/03/2010 11:25 PM 381,716 libboost_thread-vc80-mt.lib
24/03/2010 11:25 PM 999,552 libboost_thread-vc80-mt-gd-1_42.lib
24/03/2010 11:25 PM 999,552 libboost_thread-vc80-mt-gd.lib
24/03/2010 11:25 PM 421,050 libboost_thread-vc80-mt-s-1_42.lib
24/03/2010 11:25 PM 421,050 libboost_thread-vc80-mt-s.lib
24/03/2010 11:25 PM 1,015,688 libboost_thread-vc80-mt-sgd-1_42.lib
24/03/2010 11:25 PM 1,015,688 libboost_thread-vc80-mt-sgd.lib
In Visual Studio, I have written a test app using the boost thread library. Based on code generation settings it asks for these four libs only (like multithreading debug, multithreading, multithreading debug dll, and multithreading dll)
在 Visual Studio 中,我使用 boost 线程库编写了一个测试应用程序。基于代码生成设置,它只要求这四个库(如多线程调试、多线程、多线程调试 dll 和多线程 dll)
24/03/2010 11:25 PM 381,716 libboost_thread-vc80-mt-1_42.lib
24/03/2010 11:25 PM 381,716 libboost_thread-vc80-mt.lib
24/03/2010 11:25 PM 999,552 libboost_thread-vc80-mt-gd-1_42.lib
24/03/2010 11:25 PM 999,552 libboost_thread-vc80-mt-gd.lib
24/03/2010 11:25 PM 421,050 libboost_thread-vc80-mt-s-1_42.lib
24/03/2010 11:25 PM 421,050 libboost_thread-vc80-mt-s.lib
24/03/2010 11:25 PM 1,015,688 libboost_thread-vc80-mt-sgd-1_42.lib
24/03/2010 11:25 PM 1,015,688 libboost_thread-vc80-mt-sgd.lib
Now my question is how can I link my app to the other 2 libs so that it uses the dlls?
现在我的问题是如何将我的应用程序链接到其他 2 个库以便它使用 dll?
24/03/2010 11:25 PM 53,248 boost_thread-vc80-mt-1_42.dll
24/03/2010 11:25 PM 17,054 boost_thread-vc80-mt-1_42.lib
24/03/2010 11:25 PM 17,054 boost_thread-vc80-mt.lib
24/03/2010 11:25 PM 73,728 boost_thread-vc80-mt-gd-1_42.dll
24/03/2010 11:25 PM 17,214 boost_thread-vc80-mt-gd-1_42.lib
24/03/2010 11:25 PM 17,214 boost_thread-vc80-mt-gd.lib
Question 2. What does the g, s stands for?
问题 2. g, s 代表什么?
回答by Rob
You can force Boost to use the DLLs by defining BOOST_ALL_DYN_LINK
- either in your C++ preprocessor settings or by a #define
in your stdafx.h
pre-compiled header, e.g.:
您可以强制加速通过定义使用的DLL BOOST_ALL_DYN_LINK
-无论是在你的C ++预处理器设置或通过#define
在stdafx.h
预编译的头,如:
#define BOOST_ALL_DYN_LINK
#define BOOST_ALL_DYN_LINK
回答by JProgrammer
To configure boost use the user config header
要配置 boost 使用用户配置标头
<boost/config/user.hpp>
Then just look for the dynamic link lines and change to your desired configuration
然后只需查找动态链接行并更改为您想要的配置
// BOOST_ALL_DYN_LINK: Forces all libraries that have separate source,
// to be linked as DLL's rather than static libraries on Microsoft Windows
// (this macro is used to turn on __declspec(dllimport) modifiers, so that
// the compiler knows which symbols to look for in a DLL rather than in a
// static library). Note that there may be some libraries that can only
// be statically linked (Boost.Test for example) and others which may only
// be dynamically linked (Boost.Threads for example), in these cases this
// macro has no effect.
// #define BOOST_ALL_DYN_LINK
回答by Artem Sokolov
The .lib files are linked statically, while .dll files are linked dynamically. I believe it's a VC project setting.
.lib 文件是静态链接的,而 .dll 文件是动态链接的。我相信这是一个 VC 项目设置。
The "lib" prefix is for static libraries. Use link=static The 's' letter is to static linking to runtime. Use runtime-link=static The 'd' is debug, use variant=debug The 'g' is using debug runtime, I think it's included in 'debug' variant already. If not runtime-debugging=on will help.
Source: http://old.nabble.com/Build-statically-linked-boost-libs-*-vc90-mt-sgd.lib-td16301103.html
来源:http: //old.nabble.com/Build-statically-linked-boost-libs-*-vc90-mt-sgd.lib-td16301103.html