Ich versuche, ein einfaches Tutorial von boost :: Thread (ver 1,4-3) in VS 2008 zu folgen:boost :: thread Build-Fehler (nicht in der Lage zu verknüpfen lib && ungelöst extern)
#include <boost/thread/thread.hpp>
void Func()
{
// Do something
}
void main()
{
boost::thread _thrd(&Func);
_thrd.join();
....
}
Während Kompilierung es erzeugt diesen Fehler:
Error 1 fatal error LNK1104: cannot open file 'libboost_thread-vc90-mt-gd-1_43.lib' CConsole
, die ich durch das Hinzufügen #define BOOST_ALL_NO_LIB
zu lösen haben. aber es gibt mir einen anderen Fehler:
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
Wer weiß, wie das Problem zu lösen?
Danke.
Nicht alle Teile von Boost sind Nur-Header. Sie müssen die entsprechenden cpp-Dateien einschließen (nicht empfohlen) oder (in der Regel besser) eine statische Bibliothek erstellen, mit der Sie Ihr Projekt verknüpfen können. – stinky472
Hallo stinky472, Ich verlinke die lib-Datei, aber ich bemerke den Dateinamen ist Bit-Unterschied, so dass ich die Datei umbenennen und es scheint zu arbeiten. Danke. – csa
Der Name der Lib ändert sich je nachdem, welche Art von Lib du erstellst: statisch/dynamisch, debug/release, single/multithreading .... Du solltest den Namen NICHT ändern, sondern die richtige lib, die du brauchst, verwenden Bjambauer. – nabulke