Staram się śledzić prosty tutorial boost :: wątek (ver 1.4-3) w VS 2008:błąd kompilacji boost :: thread (w stanie połączyć lib && nierozwiązane zewnętrznych)
#include <boost/thread/thread.hpp>
void Func()
{
// Do something
}
void main()
{
boost::thread _thrd(&Func);
_thrd.join();
....
}
czasie kompilacja produkuje ten błąd:
Error 1 fatal error LNK1104: cannot open file 'libboost_thread-vc90-mt-gd-1_43.lib' CConsole
które muszę rozwiązać dodając #define BOOST_ALL_NO_LIB
. Jednak to daje mi kolejny błąd:
Error 3 fatal error LNK1120: 2 unresolved externals
C:\xx\Documents\Visual Studio 2008\Projects\CConsole\Debug\CConsole.exe
Error 1 error LNK2019: unresolved external symbol "public: __thiscall boost::thread::~thread(void)" ([email protected]@@[email protected]) referenced in function _wmain CConsole.obj
Error 2 error LNK2019: unresolved external symbol "private: void __thiscall boost::thread::start_thread(void)" ([email protected]@[email protected]@AAEXXZ) referenced in function "public: __thiscall boost::thread::thread<void (__cdecl*)(void)>(void (__cdecl*)(void),struct boost::thread::dummy *)" ([email protected]@[email protected]@[email protected]@[email protected]@Z) CConsole.obj
Czy ktoś wie jak rozwiązać ten problem?
Dzięki.
Nie wszystkie części wzmocnienia są tylko w nagłówku. Musisz dołączyć odpowiednie pliki cpp (niezalecane) lub (ogólnie lepiej) zbudować statyczną bibliotekę, do której możesz połączyć swój projekt. – stinky472
Cześć, stinky472, Łączę plik lib, ale zauważam, że nazwa pliku jest różnicą bitową, więc zmieniam nazwę pliku i wygląda na to, że działa. Dzięki. – csa
nazwa lib zmienia się w zależności od rodzaju tworzonej biblioteki: static/dynamic, debug/release, single/multithreading .... NIE powinieneś zmieniać nazwy, ale buduj poprawną bibliotekę, której potrzebujesz, używając parametrów do bjam-builder. – nabulke