我按照这里的指示在Windows 7 (64位)上下载和构建了boost库(version 1.47.0)。现在想要使用
Boost::Filesystem
库时,我能成功地引入头文件并编译代码文件。但问题出在链接阶段,我收到如下错误信息:main.obj : error LNK2019: unresolved external symbol "class boost::filesystem3::file_status __cdecl boost::filesystem3::detail::status(class boost::filesystem3::path const &,class boost::system::error_code *)" (?status@detail@filesystem3@boost@@YA?AVfile_status@23@AEBVpath@23@PEAVerror_code@system@3@@Z) referenced in function "bool __cdecl boost::filesystem3::exists(class boost::filesystem3::path const &)" (?exists@filesystem3@boost@@YA_NAEBVpath@12@@Z)
main.obj : error LNK2019: unresolved external symbol "private: static class std::codecvt<wchar_t,char,int> const * & __cdecl boost::filesystem3::path::wchar_t_codecvt_facet(void)" (?wchar_t_codecvt_facet@path@filesystem3@boost@@CAAEAPEBV?$codecvt@_WDH@std@@XZ) referenced in function "public: static class std::codecvt<wchar_t,char,int> const & __cdecl boost::filesystem3::path::codecvt(void)" (?codecvt@path@filesystem3@boost@@SAAEBV?$codecvt@_WDH@std@@XZ)
(包括其他内容)
值得注意的是,当我第一次尝试构建该项目时,它说找不到 .lib 文件 libboost_filesystem-vc100-mt-1_47.lib
。我没有明确告诉它需要那个文件,所以不知道它是如何发现的?无论如何,我将链接器指向了正确的目录,然后出现了上述错误。
有人知道如何解决这个问题吗?谢谢。
编辑:我正在使用 VS2010 工具链通过 eclipse CDT 来构建系统。完整的编译命令为
cl /c /EHs /MD /Zi /I"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include" /I"C:\boost_1_47_0" /nologo <SOURCE_FILE>
连接器命令
link /debug /nologo /libpath:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64 /libpath:C:\boost_1_47_0\stage\lib /libpath:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64 /OUT:<EXE_NAME> <OBJECT_FILES>
pragma
语句告诉链接器它需要所述的.lib文件。 - CharlesB#pragma comment(lib, ...)
指令中使用。 - TeaWolfboostrap; .\b2
命令。很可能这个命令编译了错误的版本。抱歉,我应该说明一下,我使用的是VS2010,并已将详细信息添加到问题中。 - Dan