我无法将我的项目链接到Microsoft Visual C++ 2008 Express Edition中的Boost(版本1.37.0)文件系统lib文件.Filesystem库不是仅包含头的库.我一直在关注官方推送网页上发布的Windows入门指南.以下是我采取的步骤:
我使用bjam构建完整的lib文件集:
bjam --build-dir="C:\Program Files\boost\build-boost" --toolset=msvc --build-type=complete
我将/ libs目录(位于C:\ Program Files\boost\build-boost\boost\bin.v2)复制到C:\ Program Files\boost\boost_1_37_0\libs.
在Visual C++中,在" 项目">"属性">"其他库目录"下,我添加了以下路径:
C:\ Program Files\boost\boost_1_37_0\libs
C:\ Program Files\boost\boost_1_37_0\libs\filesystem\build\msvc-9.0express\debug\link-static\threading-multi
我绝望地加了第二个.它是libboost_system-vc90-mt-gd-1_37.lib所在的确切目录.
在配置属性> C/C++>常规>其他包含目录中,我添加了以下路径:
C:\ Program Files\boost\boost_1_37_0
然后,为了使锦上添花,在工具>选项VC++目录>库文件下,我添加了步骤3中提到的相同目录.
尽管如此,当我构建我的项目时,我收到以下错误:
fatal error LNK1104: cannot open file 'libboost_system-vc90-mt-gd-1_37.lib'
另外,这里是我试图编译的代码以及(假设正确的)lib文件所在的前述目录的屏幕截图:
#include "boost/filesystem.hpp" // includes all needed Boost.Filesystem declarations #include// for std::cout using boost::filesystem; // for ease of tutorial presentation; // a namespace alias is preferred practice in real code using namespace std; int main() { cout << "Hello, world!" << endl; return 0; }
Scott.. 8
Ferruccio的答案包含了大部分见解.然而,Pukku让我意识到我的错误.我发布自己的答案给出了完整的解释.正如Ferruccio解释的那样,Filesystem依赖于两个库.对我来说,这些是:
libboost_system-VC90-MT-GD-1_37.lib
libboost_filesystem-VC90-MT-GD-1_37.lib
我一定没注意到当我提供了libboost_filesystem-vc90-mt-gd-1_37.lib的目录时,错误输出从
fatal error LNK1104: cannot open file 'libboost_filesystem-vc90-mt-gd-1_37.lib'
至
fatal error LNK1104: cannot open file 'libboost_system-vc90-mt-gd-1_37.lib'
让我认为错误是持续存在的.这导致我发布一些相当不准确的信息.此外,在阅读文件系统需要两个库之后,我现在看到bjam命令的关键字阶段的重要性.供应
bjam --build-dir="C:\Program Files\boost\build-boost" --toolset=msvc --build-type=complete stage
使bjam 在boost_1_37_0目录中放置一个名为stage的附加目录.此文件夹包含名为/ lib的文件夹,该文件夹在一个位置包含所有lib文件的副本.这对Visual C++很方便,因为您可以使用此单个目录提供它,它将处理所有依赖项.
Ferruccio的答案包含了大部分见解.然而,Pukku让我意识到我的错误.我发布自己的答案给出了完整的解释.正如Ferruccio解释的那样,Filesystem依赖于两个库.对我来说,这些是:
libboost_system-VC90-MT-GD-1_37.lib
libboost_filesystem-VC90-MT-GD-1_37.lib
我一定没注意到当我提供了libboost_filesystem-vc90-mt-gd-1_37.lib的目录时,错误输出从
fatal error LNK1104: cannot open file 'libboost_filesystem-vc90-mt-gd-1_37.lib'
至
fatal error LNK1104: cannot open file 'libboost_system-vc90-mt-gd-1_37.lib'
让我认为错误是持续存在的.这导致我发布一些相当不准确的信息.此外,在阅读文件系统需要两个库之后,我现在看到bjam命令的关键字阶段的重要性.供应
bjam --build-dir="C:\Program Files\boost\build-boost" --toolset=msvc --build-type=complete stage
使bjam 在boost_1_37_0目录中放置一个名为stage的附加目录.此文件夹包含名为/ lib的文件夹,该文件夹在一个位置包含所有lib文件的副本.这对Visual C++很方便,因为您可以使用此单个目录提供它,它将处理所有依赖项.