gpt4 book ai didi

c++ - 如何将 boost 链接到我的程序?

转载 作者:太空狗 更新时间:2023-10-29 20:25:06 29 4
gpt4 key购买 nike

我下载了 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 .因此,您必须确保在编译时链接它。您有两个链接选项。

引用: http://www.boost.org/doc/libs/1_47_0/more/getting_started/unix-variants.html#link-your-program-to-a-boost-library

选项1

使用 -lboost_system(或/boost_####/stage/lib/目录中的等效文件)。当然,您还必须使用 -L/file/path/to/libraries 设置库路径,除非 boost 系统驻留在标准查找目录中。

例子

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"""

注意:有关非仅 header 文件的列表,请参阅 http://www.boost.org/doc/libs/1_47_0/more/getting_started/windows.html#header-only-libraries (与“仅标题”第一段中的链接相同)。

关于c++ - 如何将 boost 链接到我的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24813060/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com