我下载了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]
答案 0 :(得分:6)
boost::system
。与boost的许多其他部分相比,boost系统不是header-only。因此,您必须确保在编译时链接它。您有两种链接选项。
使用-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
在代码末尾包含库的完整文件路径。
从命令行运行此命令。三引号"""
仅对包含空格的路径是必需的。
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(与“仅标题”的第一段相同的链接)。