我在instructions here之后在Windows 7(64位)上下载并构建了增强库(版本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
。我没有具体告诉它需要该文件所以不确定它是如何计算出来的?无论哪种方式,我将链接器指向正确的目录,然后它给出了上述错误。
有人知道如何解决这个问题吗?感谢。
编辑:我正在通过eclipse CDT使用VS2010工具链来构建系统。完整的编译命令是
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>
答案 0 :(得分:2)
使用address-model = 64 b2命令行开关重建Boost库。这构建了64位库。
答案 1 :(得分:0)
如果您使用的是linux,并且发现本文正在寻找修复程序(至少在ubuntu 12.10上)来安装boost文件系统的开发包:
sudo apt-get install libboost-filesystem-dev
安装正确的链接库并且一切正常。