2010-03-25 12 views
26

Ho compilato boost lib e ottenuto questi.Come collegarsi alle librerie di boost dinamiche?

//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, ho scritto un'app di test utilizzando la libreria di thread boost. In base alle impostazioni di generazione di codice che chiede solo queste quattro librerie (come multithreading di debug, il multithreading, il multithreading di debug dll, e multithreading 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 

Ora la mia domanda è come posso collegare il mio app per le altre 2 librerie così che usa le 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 

Domanda 2. Che cosa significa g, s?

risposta

9
  1. I file .lib sono collegati staticamente, mentre i file dll sono collegati dinamicamente. Credo che sia un progetto 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. 

Fonte: http://old.nabble.com/Build-statically-linked-boost-libs- * -vc90-mt-sgd.lib-td16301103.html

+6

Meglio fonte: http: //www.boost .org/doc/librerie/1_42_0/più/Getting_Started/windows.html # biblioteca-naming –

28

È possibile forzare Boost di utilizzare le DLL definendo BOOST_ALL_DYN_LINK - sia nella tua Impostazioni del preprocessore C++ o nell'intestazione precompilata , ad esempio:

#define BOOST_ALL_DYN_LINK

18

Per configurare spinta utilizzare l'intestazione di configurazione utente

<boost/config/user.hpp> 

Poi basta guardare per le linee di collegamento dinamico e modifica la configurazione desiderata

// 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 
Problemi correlati