我下载了Boost 1.54并运行了bootstrap.bat mingw.然后我试着运行下面的程序.我收到你在下面看到的错误.我已经尝试将我的boost文件夹复制到mingw include文件夹中,我尝试将我的文件链接到boost / stage / lib文件夹,但我没有成功.我看到很多类似于这个问题的问题,但没有一个解释如何将boost文件夹链接到文件.
我是否必须将boost文件夹复制到其他目录?我是否必须更改路径变量?如何让boost库链接到我的代码?
码
#include <boost/filesystem.hpp>
#include <iostream>
using namespace std;
using namespace boost::filesystem;
int main()
{
boost::filesystem::directory_iterator iterator(string("."));
for(; iterator != boost::filesystem::directory_iterator(); ++iterator)
{
cout << (iterator->path().filename()) << endl;
}
boost::filesystem::path full_path( boost::filesystem::current_path() );
std::cout << "Current path is : " << full_path << std::endl;
return 0;
}
错误
C:\Users\212340~1\AppData\Local\Temp\ccZA7umT.o:playground.cc:(.text+0xa4): undefined reference to `boost::filesystem::path::filename() const'
C:\Users\212340~1\AppData\Local\Temp\ccZA7umT.o:playground.cc:(.text+0x244): undefined reference to `boost::system::generic_category()'
C:\Users\212340~1\AppData\Local\Temp\ccZA7umT.o:playground.cc:(.text+0x24e): undefined reference to `boost::system::generic_category()'
C:\Users\212340~1\AppData\Local\Temp\ccZA7umT.o:playground.cc:(.text+0x258): undefined reference to `boost::system::system_category()'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: C:\Users\212340~1\AppData\Local\Temp\ccZA7umT.o: bad reloc address 0x1b in section `.text$_ZNK5boost6system10error_code7messageEv[__ZNK5boost6system10error_code7messageEv]'
collect2.exe: error: ld returned 1 exit status
[Finished in 21.0s with exit code 1]
解决方法:
回答
boost :: system必须明确链接.与boost的许多其他部分相比,boost系统不是header-only.因此,您必须确保在编译时链接它.您有两种链接选项.
选项1
使用-lboost_system(或/ boost _ #### / stage / lib /目录中的等效文件).当然,除非boost系统驻留在标准查找目录中,否则还必须使用-L / file / path / to / libraries设置库路径.
例
g++ playground.cc -o playground -L~/boost/stage/lib/ -libboost_filesystem-mgw48-mt-1_54.a
选项2
在代码末尾包含库的完整文件路径.
例
从命令行运行它.三引号“”“仅对包含空格的路径是必需的.
g++ playground.cc -o playground """C:\My Programs\boost_1_54_0\stage\lib\libboost_filesystem-mgw48-mt-1_54.a""" """C:\My Programs\boost_1_54_0\stage\lib\libboost_system-mgw48-mt-1_54.a"""
注意:有关不是标题的文件列表,请参阅http://www.boost.org/doc/libs/1_47_0/more/getting_started/windows.html#header-only-libraries(与“仅标题”的第一段中相同的链接).